问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Prometheus + Grafana安装部署指南

创作时间:
作者:
@小白创作中心

Prometheus + Grafana安装部署指南

引用
CSDN
1.
https://blog.csdn.net/zfgylbcc/article/details/137177631

Prometheus和Grafana是常用的监控和可视化工具,它们可以收集和展示各种系统指标,帮助运维人员及时发现和解决问题。本文将详细介绍Prometheus和Grafana的安装部署过程,包括Prometheus的安装、配置和服务启动,Node Exporter的部署和Prometheus对接,以及Grafana的安装和登录。

Prometheus安装部署

1.1 下载

下载链接:https://github.com/prometheus/prometheus/releases/download/v2.40.4/prometheus-2.40.4.linux-amd64.tar.gz

1.2 解压

tar -xvf prometheus-2.40.4.linux-amd64.tar.gz

1.3 安装

  1. 进入目录
cd prometheus-2.40.4.linux-amd64
  1. 将可执行命令转移到/usr/bin
mv prometheus promtool /usr/bin/
  1. 将配置文件转移
mkdir /etc/prometheus/
cp -r console_libraries consoles prometheus.yml /etc/prometheus/
  1. 添加prometheus用户
useradd -M -r -s /bin/false prometheus
  1. 创建所需路径并赋予权限
mkdir -p /etc/prometheus /var/lib/prometheus/metrics2 /var/run/prometheus /var/log/prometheus
chown -R prometheus:prometheus /var/lib/prometheus/ /etc/prometheus/ /var/run/prometheus /var/log/prometheus
  1. 创建prometheus服务启动配置文件

编辑/etc/init.d/prometheus文件,内容如下:

#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          prometheus
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Monitoring system and time series database
# Description:       Prometheus is a systems and services monitoring system. It
#                    collects metrics from configured targets at given
#                    intervals, evaluates rule expressions, displays the
#                    results, and can trigger alerts if some condition is
#                    observed to be true.
### END INIT INFO
# Author: Martín Ferrari <tincho@debian.org>
DESC="monitoring system and time series database"
DAEMON=/usr/bin/prometheus
NAME=prometheus
USER=prometheus
PIDFILE=/var/run/prometheus/prometheus.pid
LOGFILE=/var/log/prometheus/prometheus.log
CFGFILE=/etc/prometheus/prometheus.yml
HELPER=/usr/bin/daemon
HELPER_ARGS="--name=$NAME --output=$LOGFILE --pidfile=$PIDFILE --user=$USER"
ARGS="--config.file=/etc/prometheus/prometheus.yml \
      --web.console.templates=/etc/prometheus/consoles \
      --web.console.libraries=/etc/prometheus/console_libraries \
      --storage.tsdb.path=/var/lib/prometheus/metrics2/ \
      --storage.tsdb.retention.time=180d \
      --query.max-samples=200000000 \
      --web.enable-admin-api \
      --storage.tsdb.wal-compression \
      --web.enable-lifecycle"
config_check()
{
    retcode=0
    errors="$(/usr/bin/promtool check config $CFGFILE 2>&1)" || retcode=$?
    if [ $retcode -ne 0 ]; then
        log_failure_msg
        echo "Configuration test failed. Output of config test was:" >&2
        echo "$errors" >&2
        return $retcode
    fi
}
do_start_prepare()
{
    mkdir -p `dirname $PIDFILE` || true
    chown -R $USER: /var/lib/prometheus/metrics2
    chown -R $USER: `dirname $LOGFILE`
    chown -R $USER: `dirname $PIDFILE`
}
do_start_cmd()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    $HELPER $HELPER_ARGS --running && return 1
    config_check || return 2
    $HELPER $HELPER_ARGS -- $DAEMON $ARGS || return 2
    return 0
}
do_stop_cmd()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    $HELPER $HELPER_ARGS --running || return 1
    $HELPER $HELPER_ARGS --stop || return 2
    # wait for the process to really terminate
    for n in 1 2 3 4 5; do
        sleep $n
        $HELPER $HELPER_ARGS --running || break
    done
    $HELPER $HELPER_ARGS --running || return 0
    return 2
}
do_reload()
{
    log_daemon_msg "Reloading $DESC configuration files" "$NAME"
    $HELPER $HELPER_ARGS --running || return 1
    config_check || return 2
    helper_pid=$(cat $PIDFILE)
    if [ -z "$helper_pid" ]; then
        log_failure_msg "Unable to find PID"
        return 1
    fi
    start-stop-daemon --stop --signal 1 --quiet \
        --ppid "$helper_pid" --exec "$DAEMON"
    log_end_msg $?
}
  1. 服务的启停、重启
chmod +x /etc/init.d/prometheus
/etc/init.d/prometheus start/stop/restart

1.4 打开web页面

Prometheus安装成功后,打开http://localhost:9090会出现如下页面,即表示安装成功

Node Exporter部署和Prometheus对接

2.1 下载

下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

2.2 解压

tar xvf node_exporter-1.7.0.linux-amd64.tar.gz

2.3 运行

./node_exporter --web.listen-address="192.168.10.131:9100" --log.level=warn

2.4 测试验证

curl -g -X GET http://192.168.10.131:9100/metrics?collect[]=cpu

注意这里一定要保证listen-address和url的ip端口一致,最好都用同网段ip,不要用localhost和127.0.0.1

2.5 Prometheus配置

修改Prometheus配置/etc/prometheus/prometheus.yml文件

scrape_configs:
- job_name: "prometheus"
    static_configs:
- targets: ["192.168.10.131:9100"]

将Node Exporter监控地址后,重启Prometheus

systemctl restart prometheus

2.6 查看验证

通过Prometheus自带的UI界面,可以看到新的监控节点已经接入。点击进去,能够看到监控的内容选项。

Grafana安装部署

3.1 下载

下载地址:https://dl.grafana.com/enterprise/release/grafana-enterprise_10.4.1_amd64.deb

3.2 安装

因为我使用的是离线安装,因此需要很多离线包,这里我统一下载放到云盘,需要自取

链接:https://pan.baidu.com/s/1k-6lmtGgAOCJug9btWW6SQ 
提取码:20zs

注意,这里的离线包参考的是Ubuntu 20.04的版本,其他版本的系统请自我调整

安装指令:

dpkg -i *.deb

查看版本号

grafana-cli -version

3.3 启动Grafana

启动:

systemctl start grafana-server

停止:

systemctl stop grafana-server

重启:

systemctl restart grafana-server

查看状态:

systemctl status grafana-server

3.4 登录Web页

Web页地址:http://localhost:3000

用户名:admin

第一次登录,会让设置密码。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号