grafana 安装部署

Prometheus   2025-01-12 16:31   421   0  

1、下载安装包解压

官网下载地址:

https://grafana.com/grafana/download

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

2、启动服务

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 &

3、开启防火墙端口

systemctl status firewalld
firewall-cmd --zone=public --add-port=3000/tcp --permanent 
firewall-cmd --reload
firewall-cmd --zone=public --query-port=3000/tcp

4、测试验证

浏览器访问

http://IP:3000/

初始账号/密码:admin/admin,首次登录要要求改密码。
image.png
image.png

5、配置 Grafana

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 :::

配置文件中以 ; 开头的行为注释行。

paths

# 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

[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

[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

[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

[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"

dashboards

versions_to_keep = 20    # 可保持会话个数

users

[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

[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

[auth.basic]
enabled = true  # 当设置为true,则http api开启基本认证

auth.proxy

[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

[auth.ldap]
enabled = false    # 开启ldap用户认证
config_file = /etc/grafana/ldap.toml    # ldap认证相关配置文件,二进制安装ldap.toml文件在conf文件夹下面
allow_sign_up = true    # 允许登陆

alerting

[alerting]
enabled = true  # 设置为false以禁用警报引擎,并从UI中隐藏警报
execute_alerts = true  # 是否执行报警规则

analytics

[analytics]
reporting_enabled = true  # 如果设置为true,则会发送匿名使用分析到stats.grafana.org,主要用于跟踪允许实例、版本、dashboard、错误统计。默认是true
check_for_updates = true  # 更新检查设置
google_analytics_ua_id =  # 使用GA进行分析,填写你的GA ID即可

 

smtp

[smtp]
enabled = false  # 是否开启
host = localhost:25  # ip和端口
user =
password =
cert_file =
key_file =
skip_verify = false
from_address = admin@grafana.localhost  # 发送邮箱名
from_name = Grafana  # 发送人

6、导入控制面板

一些比较好看的控制面板ID

Nodeexporter:8919 Mysqldexporter:7362  SpringBoot APM DashBoard:12900  在线DashBoard:https://grafana.com/grafana/dashboards/

先添加prometheus的数据源
image.png
image.png
image.png
image.png
导入控制面板
image.png
这里导入的ID是:8919(注意,这个控制面板一定要有node_exporter添加到prometheus里!!!)
image.png
选择数据源
image.png
实例IP在prometheus的prometheus.yml文件里面配置
image.png
image.png
image.png
image.png

7、Shell 脚本一键安装

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


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。