官网下载地址:
cd /usr/local/prometheus wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.5-1.x86_64.rpm sudo yum install grafana-enterprise-9.0.5-1.x86_64.rpm
cd /usr/local/prometheus wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.5.linux-amd64.tar.gz tar -zxvf grafana-enterprise-9.0.5.linux-amd64.tar.gz
rpm安装可以直接用systemctl操作
systemctl start grafana-server systemctl enable grafana-server
二进制安装需要手工启动
nohup /usr/local/prometheus/grafana-9.0.5/bin/grafana-server -config "/usr/local/prometheus/grafana-9.0.5/conf/defaults.ini" >/usr/local/prometheus/grafana-9.0.5/grafana.log 2>&1 &
systemctl status firewalld firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload firewall-cmd --zone=public --query-port=3000/tcp
浏览器访问
http://IP:3000/
初始账号/密码:admin/admin,首次登录要要求改密码。
Note: 更改 Grafana 配置文件后需要重启 Grafana 服务生效。
rpm安装的文件路径
:::info
日志文件:/var/log/grafana
数据文件:/var/lib/grafana/grafana.db 默认为 sqlite3 数据库,也可以使用 mysql、postgres,配置方法 (Tips:升级前要备份数据文件) 。
配置文件: /etc/grafana/grafana.ini
:::
二进制安装的文件路径
:::info
日志文件(启动服务时指定):/usr/local/prometheus/grafana-9.0.5/grafana.log
数据文件:/usr/local/prometheus/grafana-9.0.5/data/grafana.db 默认为 sqlite3 数据库,也可以使用 mysql、postgres,配置方法 (Tips:升级前要备份数据文件) 。
配置文件(默认使用defaults.ini,可以在启动时使用 -config 指定配置文件):/usr/local/prometheus/grafana-9.0.5/conf/defaults.ini
:::
配置文件中以 ; 开头的行为注释行。
# default_section instance_name = DI # 实例名称,默认为主机名 [paths] data = data # 数据文件存放位置 temp_data_lifetime = 24h # 临时数据保存时间,默认为24小时 logs = data/log # 日志文件存放位置 plugins = data/plugins # Grafana默认查找插件的位置 provisioning = conf/provisioning # Grafana启动时依赖的配置文件存放位置
[server] protocol = http # 网络协议,如http、https、socket http_addr = localhost # 绑定的ip,留空表示绑定所有网卡ip http_port = 3000 # 访问端口 domain = localhost # 这个设置是root_url的一部分,当你通过浏览器访问grafana时的公开的domian名称,默认是localhost enforce_domain = false # 如果主机的header不匹配domian,则跳转到一个正确的domain上,默认是false。防止dns重写攻击 root_url = %(protocol)s://%(domain)s:%(http_port)s/ # 这是一个web上访问grafana的全路径url,默认是%(protocol)s://%(domain)s:%(http_port)s/ router_logging = false # 是否记录web请求日志,默认是false static_root_path = public # 前端文件(HTML,JS和CSS文件)的目录路径。 默认为public enable_gzip = false cert_file = # 如果使用https则需要设置 cert_key = # 如果使用https则需要设置 socket = /tmp/grafana.sock # socket文件位置
[database] type = sqlite3 # 数据库可以是mysql、postgres、sqlite3,默认是sqlite3 host = 127.0.0.1:3306 # 只是mysql、postgres需要,默认是127.0.0.1:3306 name = grafana # grafana的数据库名称,默认是grafana user = root # 数据库用户名 password = # 数据库密码 url = # 使用URL配置数据库 ssl_mode = disable # mysql、postgres使用 path = grafana.db # 只是sqlite3需要,定义sqlite3的存储路径
[log] mode = console file # 可以是console、file、syslog,默认是console、file level = info # 日志级别 filters = # 可选设置为特定的记录设置不同的级别 [log.console] level = # 日志级别 format = console # 日志格式,支持console、text、json [log.file] level = # 日志级别 format = text # 日志格式,支持console、text、json log_rotate = true # 是否开启自动轮转 max_lines = 1000000 # 单个日志文件的最大行数,默认是1000000 max_size_shift = 28 # 单个日志文件的最大大小,默认是28,表示256MB daily_rotate = true # 每天是否进行日志轮转,默认是true max_days = 7 # 日志过期时间,默认是7,7天后删除
[security] admin_user = admin # 管理员用户,启动时创建 admin_password = admin # 管理员密码,首次启动前可更改或在配置文件设定 secret_key = SW2YcwTIb9zpOOhoPsMm # 加密 disable_gravatar = false # 禁用gravatar图片文件 data_source_proxy_whitelist = # 数据源代理白名单,ip_or_domain:port ,多个用空格分隔 disable_brute_force_login_protection = false # 禁止暴力破解 cookie_secure = false # 如果使用https,设置为true,默认为false # set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict" and "none" cookie_samesite = lax # 设置同意站点cookie相同,防止跨域攻击,可以设置为"lax", "strict" and "none"
versions_to_keep = 20 # 可保持会话个数
[users] allow_sign_up = true # 是否允许普通用户登录,如果设置为false,则禁止用户登录,默认是true,则admin可以创建用户,并登录grafana allow_org_create = true # 如果设置为false,则禁止用户创建新组织,默认是true auto_assign_org = true # 当设置为true的时候,会自动的把新增用户增加到id为1的组织中,当设置为false的时候,新建用户的时候会新增一个组织 auto_assign_org_role = Viewer # 新建用户附加的规则,默认是Viewer login_hint = email or username # 首页user框中的背景文字 default_theme = dark # 默认页面的背景 [auth] disable_login_form = false # true隐藏登陆框,默认false
[auth] login_cookie_name = grafana_session # session名称 login_maximum_inactive_lifetime_days = 7 # session保持时间 login_maximum_lifetime_duration = 30d # session保持最长时间,例如:5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). token_rotation_interval_minutes = 10 # 登陆状态,用户认证token更新频率,默认为10分钟 [auth.anonymous] enabled = false # 禁止匿名登陆
[auth.basic] enabled = true # 当设置为true,则http api开启基本认证
[auth.proxy] # 允许你在一个HTTP反向代理上进行认证设置 enabled = false header_name = X-WEBAUTH-USER header_property = username auto_sign_up = true # 默认是true。开启自动注册,如果用户在grafana DB中不存在 whitelist = 192.168.1.1, 192.168.2.1 # 白名单
[auth.ldap] enabled = false # 开启ldap用户认证 config_file = /etc/grafana/ldap.toml # ldap认证相关配置文件,二进制安装ldap.toml文件在conf文件夹下面 allow_sign_up = true # 允许登陆
[alerting] enabled = true # 设置为false以禁用警报引擎,并从UI中隐藏警报 execute_alerts = true # 是否执行报警规则
[analytics] reporting_enabled = true # 如果设置为true,则会发送匿名使用分析到stats.grafana.org,主要用于跟踪允许实例、版本、dashboard、错误统计。默认是true check_for_updates = true # 更新检查设置 google_analytics_ua_id = # 使用GA进行分析,填写你的GA ID即可
[smtp] enabled = false # 是否开启 host = localhost:25 # ip和端口 user = password = cert_file = key_file = skip_verify = false from_address = admin@grafana.localhost # 发送邮箱名 from_name = Grafana # 发送人
一些比较好看的控制面板ID
Nodeexporter:8919 Mysqldexporter:7362 SpringBoot APM DashBoard:12900 在线DashBoard:https://grafana.com/grafana/dashboards/
先添加prometheus的数据源
导入控制面板
这里导入的ID是:8919(注意,这个控制面板一定要有node_exporter添加到prometheus里!!!)
选择数据源
实例IP在prometheus的prometheus.yml文件里面配置
touch grafana.sh && chmod +x grafana.sh
#!/bin/bash #用于安装grafana #版本号 GRAFANA_VER=9.0.5 #安装位置 GRAFANA_DIR=/app/grafana #安装包存放路径 INSTALL_PACKAGE=/app/install #日志文件 LOG_FILE=/tmp/grafana.log # GRAFANA的用户名 GRAFANA_USER=prometheus # GRAFANA监听端口 GRAFANA_PORT=3000 check_err() { if [ $? -ne 0 ]; then echo "$1" exit 1 else echo "$2" fi } start() { [ ! -d /app ] && mkdir -p /app #检查是否存在wget命令,没有则安装 type wget &> /dev/null if [ $? -ne 0 ]; then yum install wget -y check_err "\033[31myum安装依赖包 wget 失败,请检查\033[0m" "\033[36myum安装依赖包 wget 成功\033[0m" fi #检查是否存在netstat命令,没有则安装 type netstat &> /dev/null if [ $? -ne 0 ]; then yum install net-tools -y check_err "\033[31myum安装依赖包 net-tools 失败,请检查\033[0m" "\033[36myum安装依赖包 net-tools 成功\033[0m" fi netstat -tln | grep ":$GRAFANA_PORT" CHECK_RESULT=$? if [ $CHECK_RESULT -eq 0 ];then echo "GRAFANA 已启动,请勿重复启动应用!" exit 1 fi echo "正在启动 GRAFANA....." [ ! -d $INSTALL_PACKAGE ] && mkdir -p $INSTALL_PACKAGE [ ! -f $INSTALL_PACKAGE/grafana-enterprise-${GRAFANA_VER}.linux-amd64.tar.gz ] && wget -O $INSTALL_PACKAGE/grafana-enterprise-${GRAFANA_VER}.linux-amd64.tar.gz https://dl.grafana.com/enterprise/release/grafana-enterprise-${GRAFANA_VER}.linux-amd64.tar.gz [ ! -d $GRAFANA_DIR ] && mkdir -p $GRAFANA_DIR count=`ls $GRAFANA_DIR | wc -l` if [ $count -gt 0 ]; then echo "目录 $GRAFANA_DIR 不为空,不再重复解压压缩包" else tar -xvzf $INSTALL_PACKAGE/grafana-enterprise-${GRAFANA_VER}.linux-amd64.tar.gz --strip-components 1 -C $GRAFANA_DIR fi cat /etc/group | grep $GRAFANA_USER if [ $? -ne 0 ]; then groupadd -g 10002 $GRAFANA_USER fi cat /etc/passwd | grep $GRAFANA_USER if [ $? -ne 0 ]; then useradd -u 10002 -g $GRAFANA_USER -d /home/$GRAFANA_USER -m $GRAFANA_USER fi chown -R $GRAFANA_USER:$GRAFANA_USER $GRAFANA_DIR [ ! -f $LOG_FILE ] && touch $LOG_FILE chown -R $GRAFANA_USER:$GRAFANA_USER $LOG_FILE # 切换用户 su - $GRAFANA_USER << EOF # 不加反斜杠,取的值是切换用户前的 nohup $GRAFANA_DIR/bin/grafana-server --config "$GRAFANA_DIR/conf/defaults.ini" --homepath=$GRAFANA_DIR >> $LOG_FILE 2>&1 & #每2s检查一次监听端口是否启动,总共检查60次共2分钟,超时未启动则退出 CHECK_RESULT=1 CHECK_COUNT=60 while [ \$CHECK_RESULT -ne 0 ];do if [ \$CHECK_COUNT -gt 0 ];then echo "等待监听端口启动..." sleep 2 netstat -tln | grep ":$GRAFANA_PORT" CHECK_RESULT=\$? CHECK_COUNT=\$((\$CHECK_COUNT-1)) else echo "ERROR: 启动$GRAFANA_PORT端口超时,请检查!" exit 1 fi done echo "GRAFANA 启动成功!" EOF #检查防火墙是否已启动,如果启动则开放端口 systemctl status firewalld > /dev/null if [ $? -eq 0 ];then firewall-cmd --add-port=$GRAFANA_PORT/tcp --permanent firewall-cmd --reload fi } stop(){ netstat -tln | grep ":$GRAFANA_PORT" check_err "GRAFANA 未启动!" "GRAFANA 正在运行,开始停止应用....." su - $GRAFANA_USER << EOF PROCESS=`ps aux | grep "homepath=$GRAFANA_DIR" | grep -v "grep" | awk '{print $2}'` for i in \${PROCESS} do echo "Kill the GRAFANA process [ \$i ]" kill -9 \$i done EOF CHECK_RESULT=0 CHECK_COUNT=30 while [ $CHECK_RESULT -eq 0 ];do if [ $CHECK_COUNT -gt 0 ];then echo "等待监听端口关闭..." sleep 2 netstat -tln | grep ":$GRAFANA_PORT" CHECK_RESULT=$? CHECK_COUNT=$(($CHECK_COUNT-1)) else echo "ERROR: 关闭$GRAFANA_PORT端口超时,请检查!" exit 1 fi done echo "关闭 GRAFANA 成功!" } restart(){ stop start } status(){ su $GRAFANA_USER -c "ps aux | grep \"homepath=$GRAFANA_DIR\" | grep -v \"grep\" | grep -v \"su $GRAFANA_USER\"" } remove(){ rm -rf $LOG_FILE rm -rf $GRAFANA_DIR #userdel -r $GRAFANA_USER } usage () { echo " " echo "Please input start to start GRAFANA." echo "Please input stop to stop GRAFANA." echo "Please input status to get GRAFANA status." echo "Please input restart to restart GRAFANA." echo "Please input remove to remove GRAFANA." echo " " } INPUT_ACTIVE=$1 ACTIVE=${INPUT_ACTIVE:=start} case ${ACTIVE} in start) start ;; stop) stop ;; status) status ;; restart) restart ;; remove) remove ;; *) usage ;; esac