ELK组件部署

--------------------------------------------------------------------------

1、elasticsearch

Elasticsearch 部署手册

 

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows Server 2016+ 或 macOS
  • 内存:最低 4GB RAM,生产环境建议 8GB+
  • 磁盘:至少 10GB 可用空间,SSD 更佳
  • Java:OpenJDK 11 (Elasticsearch 7.x 及以上版本需要)

1.2 安装 Java

bash
 
 
# CentOS 安装 OpenJDK 11
sudo yum install java-11-openjdk-devel -y

# Ubuntu 安装 OpenJDK 11
sudo apt update && sudo apt install openjdk-11-jdk -y

# 验证 Java 安装
java -version
 

2. Elasticsearch 安装

2.1 下载 Elasticsearch

bash
 
 
# 下载最新版本 (可从官网获取最新版本号)
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VERSION-linux-x86_64.tar.gz

# 解压
tar -xzf elasticsearch-$ES_VERSION-linux-x86_64.tar.gz
sudo mv elasticsearch-$ES_VERSION /usr/share/elasticsearch
 

2.2 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd elasticsearch
sudo useradd -g elasticsearch elasticsearch

# 设置权限
sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
 

2.3 系统配置优化

bash
 
 
# 调整虚拟内存
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

# 调整文件描述符限制
echo "elasticsearch soft nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "elasticsearch hard nofile 65536" | sudo tee -a /etc/security/limits.conf
 

3. 配置 Elasticsearch

3.1 基本配置

编辑配置文件 sudo vi /usr/share/elasticsearch/config/elasticsearch.yml

yaml
 
 
# 集群名称
cluster.name: my-elasticsearch-cluster

# 节点名称
node.name: node-1

# 数据和日志存储路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

# 网络设置 - 允许外部访问
network.host: 0.0.0.0

# HTTP 端口
http.port: 9200

# 初始主节点
cluster.initial_master_nodes: ["node-1"]

# 跨域设置 (如果需要前端访问)
http.cors.enabled: true
http.cors.allow-origin: "*"
 

3.2 创建数据和日志目录

bash
 
 
sudo mkdir -p /var/lib/elasticsearch /var/log/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch
 

4. 启动 Elasticsearch

4.1 直接启动 (测试用)

bash
 
 
# 切换到 elasticsearch 用户
sudo su - elasticsearch

# 启动
/usr/share/elasticsearch/bin/elasticsearch
 

4.2 作为服务启动 (生产环境)

bash
 
 
# 创建服务文件
sudo vi /etc/systemd/system/elasticsearch.service
 

服务文件内容:

ini
 
 
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=elasticsearch
Group=elasticsearch
Environment="ES_JAVA_OPTS=-Xms512m -Xmx512m"
ExecStart=/usr/share/elasticsearch/bin/elasticsearch
Restart=always
WorkingDirectory=/usr/share/elasticsearch

[Install]
WantedBy=multi-user.target
 

启动服务:

bash
 
 
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

# 检查状态
sudo systemctl status elasticsearch
 

5. 验证安装

bash
 
 
# 检查 Elasticsearch 是否运行
curl -X GET "http://localhost:9200/"
 

成功响应示例:

json
 
 
{
  "name" : "node-1",
  "cluster_name" : "my-elasticsearch-cluster",
  "cluster_uuid" : "xxxxxxxxxxxxxxxxxx",
  "version" : {
    "number" : "8.10.4",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "xxxxxxxxxxxxxxxxxx",
    "build_date" : "2023-10-11T10:02:17.390849895Z",
    "build_snapshot" : false,
    "lucene_version" : "9.7.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}
 

6. 安全配置 (生产环境必备)

6.1 启用安全功能

编辑 elasticsearch.yml,添加:

yaml
 
 
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
 

6.2 设置密码

bash
 
 
# 切换到 elasticsearch 用户
sudo su - elasticsearch

# 运行密码设置工具
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
 

按照提示为以下用户设置密码:

  • elastic (超级管理员)
  • apm_system
  • kibana_system
  • logstash_system
  • beats_system
  • remote_monitoring_user

7. 集群配置 (可选)

要配置 Elasticsearch 集群,在每个节点的 elasticsearch.yml 中添加:

yaml
 
 
# 集群名称 (所有节点必须相同)
cluster.name: my-elasticsearch-cluster

# 每个节点的唯一名称
node.name: node-2  # 第二个节点
# node.name: node-3  # 第三个节点

# 主节点发现
discovery.seed_hosts: ["node1-ip", "node2-ip", "node3-ip"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
 

8. 常用命令

bash
 
 
# 查看集群健康状态
curl -u elastic:your-password -X GET "https://localhost:9200/_cluster/health?pretty"

# 查看节点信息
curl -u elastic:your-password -X GET "https://localhost:9200/_cat/nodes?v"

# 重启 Elasticsearch
sudo systemctl restart elasticsearch

# 查看日志
sudo tail -f /var/log/elasticsearch/my-elasticsearch-cluster.log
 

9. 卸载 Elasticsearch

bash
 
 
# 停止服务
sudo systemctl stop elasticsearch
sudo systemctl disable elasticsearch

# 删除文件
sudo rm -rf /usr/share/elasticsearch
sudo rm -rf /var/lib/elasticsearch
sudo rm -rf /var/log/elasticsearch
sudo rm -f /etc/systemd/system/elasticsearch.service

# 删除用户和组
sudo userdel elasticsearch
sudo groupdel elasticsearch

10. 注意事项

  1. 生产环境中,建议为 Elasticsearch 配置专门的服务器或虚拟机
  2. 根据数据量和查询负载调整 JVM 堆大小(通常设置为系统内存的 50%,但不超过 31GB)
  3. 定期备份 Elasticsearch 数据
  4. 监控集群健康状态和性能指标
  5. 遵循 Elasticsearch 官方的安全最佳实践

通过以上步骤,您可以成功部署一个单节点或多节点的 Elasticsearch 集群,用于开发或生产环境。

 

--------------------------------------------------------------------------

 2、logstash

Logstash 部署步骤

Logstash 是 Elastic Stack 的一部分,用于数据收集、处理和转发。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 与 Elasticsearch 兼容的操作系统(Linux、Windows、macOS)
  • 至少 2GB 内存(生产环境建议 4GB+)
  • 已安装 Elasticsearch(建议与 Logstash 版本一致)
  • Java 环境(OpenJDK 11)

1.2 验证 Java 环境

bash
 
 
java -version
 

如果未安装,请参考 Elasticsearch 部署手册中的 Java 安装步骤。

2. 安装 Logstash

2.1 下载 Logstash

bash
 
 
# 指定与 Elasticsearch 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/logstash/logstash-$ES_VERSION-linux-x86_64.tar.gz

# 解压
tar -xzf logstash-$ES_VERSION-linux-x86_64.tar.gz
sudo mv logstash-$ES_VERSION /usr/share/logstash
 

2.2 创建专用用户

bash
 
 
# 使用已创建的 elasticsearch 组
sudo useradd -g elasticsearch logstash

# 设置目录权限
sudo chown -R logstash:elasticsearch /usr/share/logstash
 

3. 配置 Logstash

3.1 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/logstash.service
 

服务文件内容:

ini
 
 
[Unit]
Description=Logstash
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=logstash
Group=elasticsearch
Environment="LS_JAVA_OPTS=-Xms1g -Xmx1g"
ExecStart=/usr/share/logstash/bin/logstash
Restart=always
WorkingDirectory=/usr/share/logstash

[Install]
WantedBy=multi-user.target
 

3.2 基本配置

编辑主配置文件:

bash
 
 
sudo vi /usr/share/logstash/config/logstash.yml
 

基本配置内容:

yaml
 
 
# 节点名称
node.name: logstash-node-1

# 数据存储路径
path.data: /var/lib/logstash

# 管道配置路径
path.config: /usr/share/logstash/pipeline

# 日志路径
path.logs: /var/log/logstash

# Elasticsearch 输出配置(可选,也可在管道配置中指定)
xpack.monitoring.elasticsearch.hosts: ["http://localhost:9200"]
xpack.monitoring.enabled: true
 

3.3 创建数据和日志目录

bash
 
 
sudo mkdir -p /var/lib/logstash /var/log/logstash
sudo chown -R logstash:elasticsearch /var/lib/logstash /var/log/logstash
 

4. 创建第一个管道配置

Logstash 通过管道配置处理数据,一个简单的示例:

bash
 
 
sudo vi /usr/share/logstash/pipeline/logstash.conf
 

配置内容(从文件读取并输出到 Elasticsearch):

ruby
 
 
input {
  file {
    path => "/var/log/*.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  # 示例:解析日志中的时间戳
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
  }
  
  date {
    match => [ "logtime", "ISO8601" ]
    target => "@timestamp"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "system-logs-%{+YYYY.MM.dd}"
    # 如果 Elasticsearch 启用了安全验证
    # user => "elastic"
    # password => "your-password"
  }
  
  # 同时输出到控制台便于调试
  stdout { codec => rubydebug }
}
 

5. 启动 Logstash

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动 Logstash
sudo systemctl start logstash

# 设置开机自启
sudo systemctl enable logstash

# 检查状态
sudo systemctl status logstash
 

6. 验证部署

6.1 检查服务状态

bash
 
 
sudo systemctl status logstash
 

6.2 查看日志

bash
 
 
sudo tail -f /var/log/logstash/logstash-plain.log
 

6.3 测试管道配置

bash
 
 
# 切换到 logstash 用户
sudo su - logstash

# 测试配置文件
/usr/share/logstash/bin/logstash --config.test_and_exit -f /usr/share/logstash/pipeline/logstash.conf
 

6.4 手动运行(调试用)

bash
 
 
/usr/share/logstash/bin/logstash -f /usr/share/logstash/pipeline/logstash.conf
 

7. 常用配置示例

7.1 从 Syslog 收集数据

ruby
 
 
input {
  syslog {
    port => 514
    type => "syslog"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "syslog-%{+YYYY.MM.dd}"
  }
}
 

7.2 从 Kafka 消费数据

ruby
 
 
input {
  kafka {
    bootstrap_servers => "kafka-host:9092"
    topics => ["logs-topic"]
    group_id => "logstash-consumer"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "kafka-logs-%{+YYYY.MM.dd}"
  }
}
 

8. 卸载 Logstash

bash
 
 
# 停止服务
sudo systemctl stop logstash
sudo systemctl disable logstash

# 删除文件
sudo rm -rf /usr/share/logstash
sudo rm -rf /var/lib/logstash
sudo rm -rf /var/log/logstash
sudo rm -f /etc/systemd/system/logstash.service

# 删除用户
sudo userdel logstash
9. 注意事项
  1. 确保 Logstash 与 Elasticsearch 版本兼容
  2. 根据数据量调整 JVM 堆大小(在服务文件中设置 LS_JAVA_OPTS)
  3. 复杂的管道配置建议拆分为多个配置文件
  4. 生产环境中建议为 Logstash 配置监控
  5. 对于高负载场景,可以部署多个 Logstash 实例实现负载均衡

通过以上步骤,您可以成功部署 Logstash 并开始收集、处理和转发数据到 Elasticsearch 或其他目标系统。
 

--------------------------------------------------------------------------

 3、kibana

Kibana 部署步骤

Kibana 是 Elastic Stack 的可视化平台,用于探索、分析和可视化 Elasticsearch 中的数据。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 与 Elasticsearch 兼容的操作系统(Linux、Windows、macOS)
  • 至少 2GB 内存(生产环境建议 4GB+)
  • 已安装 Elasticsearch(必须与 Kibana 版本一致)
  • 浏览器要求:最新版本的 Chrome、Firefox、Safari 或 Edge

1.2 验证 Elasticsearch 运行状态

bash
 
 
curl -u elastic:your-password -X GET "https://localhost:9200/_cluster/health?pretty"
 

 

确保 Elasticsearch 集群状态为 green 或 yellow

2. 安装 Kibana

2.1 下载 Kibana

bash
 
 
# 指定与 Elasticsearch 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/kibana/kibana-$ES_VERSION-linux-x86_64.tar.gz

# 解压
tar -xzf kibana-$ES_VERSION-linux-x86_64.tar.gz
sudo mv kibana-$ES_VERSION /usr/share/kibana
 

2.2 设置权限

bash
 
 
# 使用已创建的 elasticsearch 用户和组
sudo chown -R elasticsearch:elasticsearch /usr/share/kibana
 

3. 配置 Kibana

3.1 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/kibana.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/share/kibana/bin/kibana
Restart=always
WorkingDirectory=/usr/share/kibana
Environment="NODE_OPTIONS=--max-old-space-size=1024"

[Install]
WantedBy=multi-user.target
 

3.2 基本配置

编辑主配置文件:

 

bash
 
 
sudo vi /usr/share/kibana/config/kibana.yml
 

 

基本配置内容:

 

yaml
 
 
# 服务器端口
server.port: 5601

# 允许外部访问
server.host: "0.0.0.0"

# 服务器名称
server.name: "kibana-server"

# Elasticsearch 地址
elasticsearch.hosts: ["https://localhost:9200"]

# Elasticsearch 认证信息(如果启用了安全功能)
elasticsearch.username: "kibana_system"
elasticsearch.password: "your-kibana-system-password"

# Elasticsearch SSL 配置
elasticsearch.ssl.verificationMode: "none"  # 生产环境建议改为 "full"

# 日志路径
logging.dest: /var/log/kibana/kibana.log

# 地区设置
i18n.locale: "zh-CN"  # 设置为中文
 

3.3 创建日志目录

bash
 
 
sudo mkdir -p /var/log/kibana
sudo chown -R elasticsearch:elasticsearch /var/log/kibana
 

4. 启动 Kibana

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动 Kibana
sudo systemctl start kibana

# 设置开机自启
sudo systemctl enable kibana

# 检查状态
sudo systemctl status kibana
 

5. 初始化设置

5.1 获取 enrollment token(当 Elasticsearch 启用安全功能时)

bash
 
 
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
 

5.2 通过浏览器访问 Kibana

打开浏览器,访问 http://your-server-ip:5601

5.3 完成初始化

  1. 输入上一步获取的 enrollment token
  2. 按照提示完成 Kibana 与 Elasticsearch 的连接
  3. 使用 Elasticsearch 的 elastic 用户和密码登录

6. 验证部署

6.1 检查服务状态

bash
 
 
sudo systemctl status kibana
 

6.2 查看日志

bash
 
 
sudo tail -f /var/log/kibana/kibana.log
 

6.3 访问 Kibana 界面

成功登录后,你应该能看到 Kibana 的主页和各种功能模块。

7. 常用配置

7.1 配置索引模式

  1. 登录 Kibana 后,进入 "Stack Management" -> "Index Patterns"
  2. 点击 "Create index pattern"
  3. 输入索引模式(例如 system-logs-*
  4. 选择时间字段(通常是 @timestamp
  5. 点击 "Create index pattern"

7.2 配置安全设置(生产环境)

yaml
 
 
# 在 kibana.yml 中添加
elasticsearch.ssl.certificateAuthorities: [ "/path/to/ca.crt" ]
xpack.security.enabled: true
xpack.encryptedSavedObjects.encryptionKey: "a-32-character-or-longer-string"
 

8. 卸载 Kibana

bash
 
 
# 停止服务
sudo systemctl stop kibana
sudo systemctl disable kibana

# 删除文件
sudo rm -rf /usr/share/kibana
sudo rm -rf /var/log/kibana
sudo rm -f /etc/systemd/system/kibana.service
  

9. 注意事项

  1. 确保 Kibana 与 Elasticsearch 版本完全一致,否则可能出现兼容性问题
  2. 生产环境中,建议为 Kibana 配置 HTTPS
  3. 对于大型部署,可以考虑部署多个 Kibana 实例并使用负载均衡器
  4. 定期备份 Kibana 的配置和索引模式
  5. 根据用户数量和使用场景调整 Kibana 的资源分配

 

通过以上步骤,你可以成功部署 Kibana 并开始可视化和分析 Elasticsearch 中的数据。

--------------------------------------------------------------------------

 4、filebeat

Filebeat 部署步骤

Filebeat 是 Elastic Stack 中的轻量级日志收集器,用于转发和集中日志数据。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 支持的操作系统:Linux、Windows、macOS
  • 轻量级资源需求:约 10-50MB 内存
  • 已部署 Elasticsearch 和 Logstash(可选,Filebeat 可直接发送数据到 Elasticsearch)
  • 与 Elasticsearch/Kibana/Logstash 版本保持一致

2. 安装 Filebeat

2.1 下载 Filebeat

bash
 
 
# 指定与 Elastic Stack 相同的版本
ES_VERSION=8.10.4
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-$ES_VERSION-linux-x86_64.tar.gz

# 解压
tar -xzf filebeat-$ES_VERSION-linux-x86_64.tar.gz
sudo mv filebeat-$ES_VERSION-linux-x86_64 /usr/share/filebeat
 

2.2 创建专用用户和设置权限

bash
 
 
# 创建用户和组
sudo groupadd filebeat
sudo useradd -g filebeat filebeat

# 设置权限
sudo chown -R filebeat:filebeat /usr/share/filebeat
 

3. 配置 Filebeat

3.1 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/filebeat.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target

[Service]
User=filebeat
Group=filebeat
ExecStart=/usr/share/filebeat/filebeat -e -c /usr/share/filebeat/filebeat.yml
Restart=always

[Install]
WantedBy=multi-user.target
 

3.2 基本配置

编辑主配置文件:

 

bash
 
 
sudo vi /usr/share/filebeat/filebeat.yml
 

3.2.1 配置输入(Input)

yaml
 
 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
    - /var/log/syslog
    # 添加需要收集的日志路径
  fields:
    log_type: system_logs  # 自定义字段,用于区分不同类型的日志
  fields_under_root: false  # 自定义字段是否放在根级别

# 可以配置多个输入源
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
  fields:
    log_type: nginx_logs
 

3.2.2 配置输出(Output)

直接输出到 Elasticsearch:
yaml
 
 
output.elasticsearch:
  hosts: ["https://localhost:9200"]
  username: "elastic"
  password: "your-elastic-password"
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  
  # SSL 配置
  ssl:
    enabled: true
    verification_mode: none  # 生产环境建议改为 full
 
输出到 Logstash(推荐用于复杂处理):
yaml
 
 
output.logstash:
  hosts: ["localhost:5044"]
  
  # 如果需要认证
  # username: "logstash_system"
  # password: "your-password"
 

3.2.3 配置 Kibana(用于导入仪表板)

yaml
 
 
setup.kibana:
  host: "localhost:5601"
  username: "kibana_system"
  password: "your-kibana-password"
  ssl:
    verification_mode: none
 

3.2.4 配置索引生命周期管理(ILM)

yaml
 
 
setup.ilm.enabled: auto
setup.ilm.policy_name: "filebeat-policy"
 

4. 加载 Kibana 仪表板(可选)

Filebeat 提供了预定义的仪表板,可用于可视化数据:

 

bash
 
 
# 切换到 filebeat 用户
sudo su - filebeat

# 加载仪表板
/usr/share/filebeat/filebeat setup --dashboards
 

5. 启动 Filebeat

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动 Filebeat
sudo systemctl start filebeat

# 设置开机自启
sudo systemctl enable filebeat

# 检查状态
sudo systemctl status filebeat
 

6. 验证部署

6.1 检查服务状态

bash
 
 
sudo systemctl status filebeat
 

6.2 查看日志

bash
 
 
sudo tail -f /var/log/filebeat/filebeat
 

6.3 测试配置

bash
 
 
sudo su - filebeat
/usr/share/filebeat/filebeat test config -c /usr/share/filebeat/filebeat.yml
 

6.4 测试输出连接

bash
 
 
/usr/share/filebeat/filebeat test output -c /usr/share/filebeat/filebeat.yml
 

7. 常用模块配置

Filebeat 提供了许多预配置的模块,可简化常见日志格式的处理:

7.1 启用 Nginx 模块

bash
 
 
sudo su - filebeat
/usr/share/filebeat/filebeat modules enable nginx
 

 

配置 Nginx 模块:

 

bash
 
 
vi /usr/share/filebeat/modules.d/nginx.yml
 

 

yaml
 
 
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]
 

7.2 启用 System 模块

bash
 
 
/usr/share/filebeat/filebeat modules enable system
 

8. 卸载 Filebeat

bash
 
 
# 停止服务
sudo systemctl stop filebeat
sudo systemctl disable filebeat

# 删除文件
sudo rm -rf /usr/share/filebeat
sudo rm -rf /var/log/filebeat
sudo rm -f /etc/systemd/system/filebeat.service

# 删除用户和组
sudo userdel filebeat
sudo groupdel filebeat
 9. 注意事项
  1. 确保 Filebeat 与 Elastic Stack 其他组件版本一致
  2. 对于大规模部署,考虑使用配置管理工具(如 Ansible)批量部署 Filebeat
  3. 合理规划日志收集路径,避免收集不必要的日志
  4. 生产环境中建议启用 SSL/TLS 加密传输
  5. 监控 Filebeat 状态,确保日志收集服务正常运行

 

通过以上步骤,你可以成功部署 Filebeat 并开始收集日志数据,将其发送到 Elasticsearch 或 Logstash 进行进一步处理和分析。

--------------------------------------------------------------------------

 5、prometheus

Prometheus 部署步骤

Prometheus 是一款开源的系统监控和告警工具,广泛用于云原生环境的监控。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
  • 内存:最低 2GB RAM,生产环境建议 4GB+
  • 磁盘:至少 10GB 可用空间(根据监控数据保留时间调整)
  • 网络:需要访问被监控目标,默认端口 9090 需开放

2. 安装 Prometheus

2.1 下载 Prometheus

bash
 
 
# 查看最新版本:https://prometheus.io/download/
PROM_VERSION=2.45.0
wget https://github.com/prometheus/prometheus/releases/download/v${PROM_VERSION}/prometheus-${PROM_VERSION}.linux-amd64.tar.gz

# 解压
tar -xzf prometheus-${PROM_VERSION}.linux-amd64.tar.gz
sudo mv prometheus-${PROM_VERSION}.linux-amd64 /usr/share/prometheus
 

2.2 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd prometheus
sudo useradd -g prometheus -s /sbin/nologin prometheus

# 设置权限
sudo chown -R prometheus:prometheus /usr/share/prometheus
 

2.3 创建数据目录

bash
 
 
sudo mkdir -p /var/lib/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
 

3. 配置 Prometheus

3.1 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/prometheus.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/share/prometheus/prometheus \
    --config.file=/usr/share/prometheus/prometheus.yml \
    --storage.tsdb.path=/var/lib/prometheus/ \
    --web.console.templates=/usr/share/prometheus/consoles \
    --web.console.libraries=/usr/share/prometheus/console_libraries \
    --web.listen-address=0.0.0.0:9090

[Install]
WantedBy=multi-user.target
 

3.2 配置监控目标

编辑主配置文件:

 

bash
 
 
sudo vi /usr/share/prometheus/prometheus.yml
 

 

基本配置内容:

 

yaml
 
 
global:
  scrape_interval: 15s  # 全局默认抓取间隔
  evaluation_interval: 15s  # 规则评估间隔

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  # 监控 Prometheus 自身
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  
  # 示例:监控远程服务器节点 (node_exporter)
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100', 'remote-server-ip:9100']
  
  # 示例:监控 Docker 容器
  - job_name: 'docker'
    static_configs:
      - targets: ['localhost:9323']
 

4. 启动 Prometheus

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动 Prometheus
sudo systemctl start prometheus

# 设置开机自启
sudo systemctl enable prometheus

# 检查状态
sudo systemctl status prometheus
 

5. 安装 Node Exporter(监控服务器资源)

Node Exporter 用于收集主机硬件和操作系统信息:

 

bash
 
 
# 下载 Node Exporter
NODE_EXPORTER_VERSION=1.6.1
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz

# 解压
tar -xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
sudo mv node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/

# 创建服务
sudo vi /etc/systemd/system/node_exporter.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
 

 

启动 Node Exporter:

 

bash
 
 
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
 

6. 验证部署

6.1 访问 Prometheus 界面

打开浏览器,访问 http://your-server-ip:9090

6.2 检查目标状态

  1. 在 Prometheus 界面点击 "Status" -> "Targets"
  2. 确认配置的目标状态为 "UP"

6.3 执行简单查询

  1. 点击 "Graph" 进入查询界面
  2. 输入查询表达式,例如 node_cpu_seconds_total
  3. 点击 "Execute" 查看结果

7. 常用配置

7.1 配置数据保留时间

默认数据保留时间为 15 天,可以在启动参数中修改:

 

ini
 
 
# 在 prometheus.service 中添加
--storage.tsdb.retention.time=30d  # 保留 30 天数据
 

7.2 配置告警规则

创建告警规则文件:

 

bash
 
 
sudo vi /usr/share/prometheus/alert_rules.yml
 

 

示例内容:

 

yaml
 
 
groups:
- name: example
  rules:
  - alert: HighCpuUsage
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage on {{ $labels.instance }}"
      description: "CPU usage is above 80% for 5 minutes (current value: {{ $value }})"
 

 

在 prometheus.yml 中引用规则文件:

 

yaml
 
 
rule_files:
  - "alert_rules.yml"
 

8. 卸载 Prometheus

bash
 
 
# 停止服务
sudo systemctl stop prometheus
sudo systemctl stop node_exporter
sudo systemctl disable prometheus
sudo systemctl disable node_exporter

# 删除文件
sudo rm -rf /usr/share/prometheus
sudo rm -rf /var/lib/prometheus
sudo rm -f /usr/local/bin/node_exporter
sudo rm -f /etc/systemd/system/prometheus.service
sudo rm -f /etc/systemd/system/node_exporter.service

# 删除用户和组
sudo userdel prometheus
sudo groupdel prometheus
  

9. 注意事项

  1. 生产环境中建议为 Prometheus 配置持久化存储
  2. 根据监控规模调整存储容量和保留策略
  3. 考虑使用 Prometheus 联邦部署来监控大规模环境
  4. 结合 Grafana 进行更丰富的数据可视化
  5. 配置适当的备份策略,防止监控数据丢失

 

通过以上步骤,你可以成功部署 Prometheus 并开始监控系统资源和应用程序。

--------------------------------------------------------------------------

 6、Node Exporter 

Node Exporter 部署步骤

Node Exporter 是 Prometheus 生态系统中的一个重要组件,用于收集主机的硬件和操作系统指标(如 CPU、内存、磁盘、网络等),并提供给 Prometheus 进行抓取。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 支持的操作系统:Linux、Windows、macOS、FreeBSD 等
  • 轻量级资源需求:通常占用不到 10MB 内存
  • 已部署 Prometheus(用于收集 Node Exporter 暴露的指标)
  • 网络:默认端口 9100 需开放,供 Prometheus 抓取数据

2. 安装 Node Exporter

2.1 下载 Node Exporter

bash
 
 
# 查看最新版本:https://github.com/prometheus/node_exporter/releases
NODE_EXPORTER_VERSION=1.6.1
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
 

2.2 解压并安装

bash
 
 
# 解压
tar -xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz

# 移动二进制文件到系统路径
sudo mv node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/

# 验证安装
node_exporter --version
 

2.3 创建专用用户

为了安全起见,建议使用专用用户运行 Node Exporter:

 

bash
 
 
# 创建用户组和用户(不允许登录系统)
sudo groupadd --system prometheus
sudo useradd --system --no-create-home --shell /bin/false --gid prometheus prometheus
 

3. 配置 Node Exporter

3.1 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/node_exporter.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Node Exporter for Prometheus
Documentation=https://prometheus.io/docs/guides/node-exporter/
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
# 基本启动命令
ExecStart=/usr/local/bin/node_exporter \
  --collector.systemd \
  --collector.systemd.unit-whitelist="(docker|sshd|nginx|prometheus|node_exporter).service" \
  --collector.processes \
  --collector.netclass \
  --collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"

[Install]
WantedBy=multi-user.target
 

 

启动参数说明:

 

  • --collector.systemd:启用 systemd 服务监控
  • --collector.systemd.unit-whitelist:指定需要监控的 systemd 服务
  • --collector.processes:启用进程监控
  • --collector.netclass:启用网络设备监控
  • --collector.filesystem.ignored-mount-points:忽略不需要监控的文件系统

3.2 启用额外收集器(可选)

Node Exporter 提供了多种收集器,可根据需要启用:

 

ini
 
 
# 示例:启用更多收集器
ExecStart=/usr/local/bin/node_exporter \
  --collector.systemd \
  --collector.processes \
  --collector.tcpstat \
  --collector.udpstat \
  --collector.mountstats \
  --collector.diskstats \
  --collector.netdev \
  --collector.filesystem
 

4. 启动 Node Exporter

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start node_exporter

# 设置开机自启
sudo systemctl enable node_exporter

# 检查服务状态
sudo systemctl status node_exporter
 

5. 验证部署

5.1 检查指标端点

Node Exporter 默认在 9100 端口暴露指标:

 

bash
 
 
# 查看暴露的指标
curl http://localhost:9100/metrics
 

 

成功响应会显示大量以 node_ 开头的指标,如 node_cpu_seconds_totalnode_memory_MemTotal_bytes 等。

5.2 在浏览器中查看

打开浏览器访问 http://your-server-ip:9100/metrics,可以看到所有收集的指标。

6. 配置 Prometheus 抓取 Node Exporter 数据

编辑 Prometheus 配置文件 prometheus.yml

 

bash
 
 
sudo vi /usr/share/prometheus/prometheus.yml
 

 

添加如下配置:

 

yaml
 
 
scrape_configs:
  # 已有的配置...
  
  # 添加 Node Exporter 监控任务
  - job_name: 'node_exporter'
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:9100']  # 本地 Node Exporter
      # 如果有其他服务器,添加其 IP 和端口
      # - targets: ['192.168.1.100:9100', '192.168.1.101:9100']
 

 

重启 Prometheus 使配置生效:

 

bash
 
 
sudo systemctl restart prometheus
 

7. 在 Prometheus 中验证

  1. 访问 Prometheus 界面:http://prometheus-server-ip:9090
  2. 点击 "Status" -> "Targets"
  3. 确认 node_exporter 任务下的目标状态为 "UP"

8. 卸载 Node Exporter

bash
 
 
# 停止服务
sudo systemctl stop node_exporter
sudo systemctl disable node_exporter

# 删除文件
sudo rm -f /usr/local/bin/node_exporter
sudo rm -f /etc/systemd/system/node_exporter.service

# 如果不再需要 prometheus 用户组,可以删除
# sudo userdel prometheus
# sudo groupdel prometheus
  

9. 注意事项

  1. 确保 Node Exporter 与 Prometheus 版本兼容(通常新版本向后兼容)
  2. 只启用需要的收集器,避免不必要的资源消耗
  3. 生产环境中建议限制 Node Exporter 端口的访问,只允许 Prometheus 服务器访问
  4. 对于大规模部署,考虑使用配置管理工具(如 Ansible)批量部署
  5. 结合 Grafana 和预设的 Node Exporter 仪表板,可以实现更直观的可视化

 

通过以上步骤,你可以成功部署 Node Exporter 并开始收集服务器的系统指标,为监控和告警提供数据基础。

--------------------------------------------------------------------------

 7、telegraf

Telegraf 部署步骤

Telegraf 是 InfluxData 开发的开源数据收集器,用于从各种来源收集、处理、聚合和写入指标。它支持多种输入源和输出目标,是监控系统中的重要组件。

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
  • 内存:最低 512MB RAM,生产环境建议 1GB+
  • 磁盘:至少 100MB 可用空间
  • 网络:根据需要开放相关端口,默认无固定端口

2. 安装 Telegraf

2.1 下载 Telegraf

bash
 
 
# 查看最新版本:https://portal.influxdata.com/downloads/
TELEGRAF_VERSION=1.27.4
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
 

2.2 解压并安装

bash
 
 
# 解压
tar -xzf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz

# 移动到系统目录
sudo mv telegraf-${TELEGRAF_VERSION} /usr/share/telegraf

# 创建软链接便于访问
sudo ln -s /usr/share/telegraf/usr/bin/telegraf /usr/local/bin/telegraf

# 验证安装
telegraf --version
 

2.3 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd telegraf
sudo useradd -g telegraf -s /sbin/nologin telegraf

# 设置权限
sudo chown -R telegraf:telegraf /usr/share/telegraf
 

3. 配置 Telegraf

3.1 创建配置文件

Telegraf 提供了生成默认配置的命令:

bash
 
 
# 创建配置目录
sudo mkdir -p /etc/telegraf

# 生成默认配置文件
sudo telegraf config > /etc/telegraf/telegraf.conf

# 设置权限
sudo chown telegraf:telegraf /etc/telegraf/telegraf.conf
 

3.2 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/telegraf.service
 

服务文件内容:

ini
 
 
[Unit]
Description=Telegraf Data Collector
Documentation=https://docs.influxdata.com/telegraf/
After=network.target

[Service]
User=telegraf
Group=telegraf
ExecStart=/usr/local/bin/telegraf --config /etc/telegraf/telegraf.conf
Restart=always

[Install]
WantedBy=multi-user.target
 

3.3 配置输入和输出插件

编辑配置文件:

bash
 
 
sudo vi /etc/telegraf/telegraf.conf
 

3.3.1 配置输入插件(收集数据)

toml
 
 
# 系统指标收集
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[inputs.diskio]]

[[inputs.mem]]

[[inputs.net]]

# 可以根据需要添加更多输入插件
[[inputs.system]]

[[inputs.processes]]

[[inputs.kernel]]
 

3.3.2 配置输出插件(发送数据)

toml
 
 
# 输出到 InfluxDB
[[outputs.influxdb]]
  urls = ["http://localhost:8086"]
  database = "telegraf"
  retention_policy = ""
  timeout = "5s"
  username = ""
  password = ""
  user_agent = "telegraf"

# 同时输出到 Prometheus(可选)
[[outputs.prometheus_client]]
  listen = ":9273"
  metric_version = 2
  retention_time = "0s"
 

4. 启动 Telegraf

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start telegraf

# 设置开机自启
sudo systemctl enable telegraf

# 检查服务状态
sudo systemctl status telegraf
 

5. 验证部署

5.1 检查服务状态

bash
 
 
sudo systemctl status telegraf
 

5.2 查看日志

bash
 
 
sudo journalctl -u telegraf -f
 

5.3 测试配置

bash
 
 
telegraf --config /etc/telegraf/telegraf.conf --test
 

该命令会显示 Telegraf 收集的指标样本,验证配置是否正确。

6. 常用插件配置

6.1 监控 Nginx

toml
 
 
[[inputs.nginx]]
  urls = ["http://localhost/status"]
  timeout = "5s"
  username = ""
  password = ""
 

需要在 Nginx 中配置 status 模块才能使用。

6.2 监控 Docker

toml
 
 
[[inputs.docker]]
  endpoint = "unix:///var/run/docker.sock"
  container_names = []
  timeout = "5s"
  perdevice = true
  total = false
  docker_label_include = []
  docker_label_exclude = []
 

6.3 监控 MySQL

toml
 
 
[[inputs.mysql]]
  servers = ["user:password@tcp(localhost:3306)/?tls=false"]
  metric_version = 2
  perf_events_statements_digest_text_limit = 120
  perf_events_statements_limit = 250
  table_schema_databases = []
  gather_process_list = true
  gather_info_schema_auto_inc = true
 

7. 卸载 Telegraf

bash
 
 
# 停止服务
sudo systemctl stop telegraf
sudo systemctl disable telegraf

# 删除文件
sudo rm -rf /usr/share/telegraf
sudo rm -f /usr/local/bin/telegraf
sudo rm -rf /etc/telegraf
sudo rm -f /etc/systemd/system/telegraf.service

# 删除用户和组
sudo userdel telegraf
sudo groupdel telegraf
  

8. 注意事项

  1. 根据需要选择输入插件,避免启用不必要的插件消耗资源
  2. 对于大规模部署,考虑使用配置管理工具批量部署和管理
  3. 生产环境中建议为 Telegraf 配置适当的资源限制
  4. 定期更新 Telegraf 到最新版本以获取新功能和安全修复
  5. 监控 Telegraf 自身的运行状态,确保数据收集服务稳定

通过以上步骤,你可以成功部署 Telegraf 并开始从各种来源收集监控指标,发送到指定的存储或分析系统。
 

--------------------------------------------------------------------------

 8、grafana

Telegraf 部署步骤

Telegraf 是 InfluxData 开发的开源数据收集器,用于从各种来源收集、处理、聚合和写入指标。它支持多种输入源和输出目标,是监控系统中的重要组件。

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
  • 内存:最低 512MB RAM,生产环境建议 1GB+
  • 磁盘:至少 100MB 可用空间
  • 网络:根据需要开放相关端口,默认无固定端口

2. 安装 Telegraf

2.1 下载 Telegraf

bash
 
 
# 查看最新版本:https://portal.influxdata.com/downloads/
TELEGRAF_VERSION=1.27.4
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
 

2.2 解压并安装

bash
 
 
# 解压
tar -xzf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz

# 移动到系统目录
sudo mv telegraf-${TELEGRAF_VERSION} /usr/share/telegraf

# 创建软链接便于访问
sudo ln -s /usr/share/telegraf/usr/bin/telegraf /usr/local/bin/telegraf

# 验证安装
telegraf --version
 

2.3 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd telegraf
sudo useradd -g telegraf -s /sbin/nologin telegraf

# 设置权限
sudo chown -R telegraf:telegraf /usr/share/telegraf
 

3. 配置 Telegraf

3.1 创建配置文件

Telegraf 提供了生成默认配置的命令:

bash
 
 
# 创建配置目录
sudo mkdir -p /etc/telegraf

# 生成默认配置文件
sudo telegraf config > /etc/telegraf/telegraf.conf

# 设置权限
sudo chown telegraf:telegraf /etc/telegraf/telegraf.conf
 

3.2 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/telegraf.service
 

服务文件内容:

ini
 
 
[Unit]
Description=Telegraf Data Collector
Documentation=https://docs.influxdata.com/telegraf/
After=network.target

[Service]
User=telegraf
Group=telegraf
ExecStart=/usr/local/bin/telegraf --config /etc/telegraf/telegraf.conf
Restart=always

[Install]
WantedBy=multi-user.target
 

3.3 配置输入和输出插件

编辑配置文件:

bash
 
 
sudo vi /etc/telegraf/telegraf.conf
 

3.3.1 配置输入插件(收集数据)

toml
 
 
# 系统指标收集
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[inputs.diskio]]

[[inputs.mem]]

[[inputs.net]]

# 可以根据需要添加更多输入插件
[[inputs.system]]

[[inputs.processes]]

[[inputs.kernel]]
 

3.3.2 配置输出插件(发送数据)

toml
 
 
# 输出到 InfluxDB
[[outputs.influxdb]]
  urls = ["http://localhost:8086"]
  database = "telegraf"
  retention_policy = ""
  timeout = "5s"
  username = ""
  password = ""
  user_agent = "telegraf"

# 同时输出到 Prometheus(可选)
[[outputs.prometheus_client]]
  listen = ":9273"
  metric_version = 2
  retention_time = "0s"
 

4. 启动 Telegraf

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start telegraf

# 设置开机自启
sudo systemctl enable telegraf

# 检查服务状态
sudo systemctl status telegraf
 

5. 验证部署

5.1 检查服务状态

bash
 
 
sudo systemctl status telegraf
 

5.2 查看日志

bash
 
 
sudo journalctl -u telegraf -f
 

5.3 测试配置

bash
 
 
telegraf --config /etc/telegraf/telegraf.conf --test
 

该命令会显示 Telegraf 收集的指标样本,验证配置是否正确。

6. 常用插件配置

6.1 监控 Nginx

toml
 
 
[[inputs.nginx]]
  urls = ["http://localhost/status"]
  timeout = "5s"
  username = ""
  password = ""
 

需要在 Nginx 中配置 status 模块才能使用。

6.2 监控 Docker

toml
 
 
[[inputs.docker]]
  endpoint = "unix:///var/run/docker.sock"
  container_names = []
  timeout = "5s"
  perdevice = true
  total = false
  docker_label_include = []
  docker_label_exclude = []
 

6.3 监控 MySQL

toml
 
 
[[inputs.mysql]]
  servers = ["user:password@tcp(localhost:3306)/?tls=false"]
  metric_version = 2
  perf_events_statements_digest_text_limit = 120
  perf_events_statements_limit = 250
  table_schema_databases = []
  gather_process_list = true
  gather_info_schema_auto_inc = true
 

7. 卸载 Telegraf

bash
 
 
# 停止服务
sudo systemctl stop telegraf
sudo systemctl disable telegraf

# 删除文件
sudo rm -rf /usr/share/telegraf
sudo rm -f /usr/local/bin/telegraf
sudo rm -rf /etc/telegraf
sudo rm -f /etc/systemd/system/telegraf.service

# 删除用户和组
sudo userdel telegraf
sudo groupdel telegraf
 

8. 注意事项

  1. 根据需要选择输入插件,避免启用不必要的插件消耗资源
  2. 对于大规模部署,考虑使用配置管理工具批量部署和管理
  3. 生产环境中建议为 Telegraf 配置适当的资源限制
  4. 定期更新 Telegraf 到最新版本以获取新功能和安全修复
  5. 监控 Telegraf 自身的运行状态,确保数据收集服务稳定

通过以上步骤,你可以成功部署 Telegraf 并开始从各种来源收集监控指标,发送到指定的存储或分析系统。
 
grafana 部署步骤
 

Grafana 部署步骤

Grafana 是一款开源的数据可视化和监控平台,支持多种数据源(如 Prometheus、Elasticsearch、InfluxDB 等),可以创建丰富的仪表盘展示监控数据。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
  • 内存:最低 1GB RAM,生产环境建议 2GB+
  • 磁盘:至少 1GB 可用空间
  • 已部署数据源(如 Prometheus、Elasticsearch 等,可选)
  • 网络:默认端口 3000 需开放

2. 安装 Grafana

2.1 使用包管理器安装(推荐)

Ubuntu/Debian:

bash
 
 
# 安装依赖
sudo apt-get install -y apt-transport-https software-properties-common wget

# 添加 GPG 密钥
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

# 添加仓库
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

# 安装 Grafana
sudo apt-get update
sudo apt-get install -y grafana
 

CentOS/RHEL:

bash
 
 
# 添加仓库
sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

# 安装 Grafana
sudo yum install -y grafana
 

2.2 手动安装(可选)

bash
 
 
# 查看最新版本:https://grafana.com/grafana/download
GRAFANA_VERSION=10.1.1
wget https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz

# 解压
tar -xzf grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz
sudo mv grafana-${GRAFANA_VERSION} /usr/share/grafana
 

3. 配置 Grafana

3.1 基本配置(包管理器安装)

包管理器安装会自动创建服务和配置文件,主要配置文件路径:

  • 主配置文件:/etc/grafana/grafana.ini
  • 数据存储目录:/var/lib/grafana
  • 日志目录:/var/log/grafana

编辑配置文件(可选):

bash
 
 
sudo vi /etc/grafana/grafana.ini
 

常用配置项:

ini
 
 
[server]
http_port = 3000
domain = your-domain.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/

[security]
admin_password = your-secure-password  # 初始管理员密码

[paths]
data = /var/lib/grafana
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
 

3.2 手动安装的服务配置

如果是手动安装,需要创建系统服务:

bash
 
 
sudo vi /etc/systemd/system/grafana-server.service
 

服务文件内容:

ini
 
 
[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target

[Service]
User=grafana
Group=grafana
Type=simple
ExecStart=/usr/share/grafana/bin/grafana-server \
  --config=/usr/share/grafana/conf/defaults.ini \
  --homepath=/usr/share/grafana \
  --data=/var/lib/grafana \
  --logs=/var/log/grafana \
  --plugins=/var/lib/grafana/plugins

[Install]
WantedBy=multi-user.target
 

创建用户和目录:

bash
 
 
sudo groupadd grafana
sudo useradd -g grafana grafana
sudo mkdir -p /var/lib/grafana /var/log/grafana
sudo chown -R grafana:grafana /var/lib/grafana /var/log/grafana /usr/share/grafana
 

4. 启动 Grafana

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start grafana-server

# 设置开机自启
sudo systemctl enable grafana-server

# 检查状态
sudo systemctl status grafana-server
 

5. 初始化 Grafana

5.1 访问 Grafana 界面

打开浏览器,访问 http://your-server-ip:3000

5.2 首次登录

  • 默认用户名:admin
  • 默认密码:admin

首次登录会要求修改默认密码,请设置一个安全的密码。

6. 配置数据源

以配置 Prometheus 为例:

  1. 登录 Grafana 后,点击左侧菜单的 "Configuration"(齿轮图标)-> "Data Sources"
  2. 点击 "Add data source"
  3. 选择 "Prometheus"
  4. 在 "HTTP" 部分,设置 "URL" 为你的 Prometheus 地址(如 http://localhost:9090
  5. 其他配置保持默认,点击底部的 "Save & Test"
  6. 看到 "Data source is working" 提示表示配置成功

7. 导入仪表盘

Grafana 提供了许多社区共享的仪表盘,可直接导入使用:

  1. 访问 Grafana 仪表盘库
  2. 找到需要的仪表盘(如 Node Exporter 相关的仪表盘 ID:1860)
  3. 在 Grafana 中,点击左侧菜单的 "Dashboards" -> "Import"
  4. 输入仪表盘 ID,点击 "Load"
  5. 选择之前配置的数据源,点击 "Import"

8. 验证部署

8.1 检查服务状态

bash
 
 
sudo systemctl status grafana-server
 

8.2 查看日志

bash
 
 
sudo tail -f /var/log/grafana/grafana.log
 

8.3 访问仪表盘

确认已成功添加数据源并能正常查看监控数据。

9. 常用操作

9.1 安装插件

bash
 
 
# 安装示例:安装饼图插件
sudo grafana-cli plugins install grafana-piechart-panel

# 安装后需要重启 Grafana
sudo systemctl restart grafana-server
 

9.2 备份数据

Grafana 数据主要存储在 /var/lib/grafana/grafana.db(SQLite 数据库):

bash
 
 
# 备份数据库
sudo cp /var/lib/grafana/grafana.db /backup/grafana.db.$(date +%F)
 

10. 卸载 Grafana

bash
 
 
# 停止服务
sudo systemctl stop grafana-server
sudo systemctl disable grafana-server

# 包管理器安装的卸载
# Ubuntu/Debian
sudo apt-get remove -y grafana

# CentOS/RHEL
sudo yum remove -y grafana

# 手动删除残留文件
sudo rm -rf /var/lib/grafana
sudo rm -rf /var/log/grafana
sudo rm -rf /etc/grafana
sudo rm -f /etc/systemd/system/grafana-server.service

# 删除用户和组
sudo userdel grafana
sudo groupdel grafana
  

11. 注意事项

  1. 生产环境中建议为 Grafana 配置 HTTPS
  2. 配置适当的用户权限和访问控制
  3. 定期备份 Grafana 数据库,防止配置丢失
  4. 对于大规模部署,考虑使用 Grafana 企业版或集群部署
  5. 监控 Grafana 自身的性能和可用性

通过以上步骤,你可以成功部署 Grafana 并开始创建和展示监控数据仪表盘。

--------------------------------------------------------------------------

 9、consul

Consul 部署步骤

Consul 是一款开源的服务网格解决方案,提供服务发现、配置管理和分段功能。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)、Windows 或 macOS
  • 内存:最低 512MB RAM,生产环境建议 1GB+
  • 磁盘:至少 1GB 可用空间
  • 网络:需要开放 8300(服务内部通信)、8301(LAN gossip)、8302(WAN gossip)、8500(HTTP API)、8600(DNS)端口

2. 安装 Consul

2.1 下载 Consul

bash
 
 
# 查看最新版本:https://releases.hashicorp.com/consul/
CONSUL_VERSION=1.16.1
wget https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip
 

2.2 安装并配置

bash
 
 
# 安装解压工具(如未安装)
sudo apt-get install unzip  # Ubuntu/Debian
# 或
sudo yum install unzip      # CentOS/RHEL

# 解压
unzip consul_${CONSUL_VERSION}_linux_amd64.zip

# 移动到系统路径
sudo mv consul /usr/local/bin/

# 验证安装
consul --version
 

2.3 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd consul
sudo useradd -g consul -s /sbin/nologin -M consul
 

2.4 创建数据和配置目录

bash
 
 
# 创建数据目录
sudo mkdir -p /var/lib/consul
sudo chown -R consul:consul /var/lib/consul

# 创建配置目录
sudo mkdir -p /etc/consul.d
sudo chown -R consul:consul /etc/consul.d
 

3. 配置 Consul

3.1 创建配置文件

bash
 
 
sudo vi /etc/consul.d/consul.hcl
 

 

单节点配置(开发 / 测试环境):

 

hcl
 
 
datacenter = "dc1"
data_dir = "/var/lib/consul"
client_addr = "0.0.0.0"  # 允许外部访问
ui_config {
  enabled = true  # 启用 Web UI
}
server = true
bootstrap_expect = 1  # 单节点集群
log_level = "INFO"
 

 

多节点集群配置(生产环境):

 

hcl
 
 
datacenter = "dc1"
data_dir = "/var/lib/consul"
client_addr = "0.0.0.0"
ui_config {
  enabled = true
}
server = true
bootstrap_expect = 3  # 期望的服务器节点数量
retry_join = ["192.168.1.101", "192.168.1.102", "192.168.1.103"]  # 其他节点IP
log_level = "INFO"
 

3.2 创建系统服务

bash
 
 
sudo vi /etc/systemd/system/consul.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=Consul service mesh agent
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
 

4. 启动 Consul

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start consul

# 设置开机自启
sudo systemctl enable consul

# 检查状态
sudo systemctl status consul
 

5. 验证部署

5.1 检查成员状态

bash
 
 
consul members
 

 

成功输出应显示当前节点信息,状态为 alive

5.2 访问 Web UI

打开浏览器,访问 http://your-server-ip:8500,可以看到 Consul 的 Web 管理界面。

5.3 测试 API

bash
 
 
# 查看集群信息
curl http://localhost:8500/v1/catalog/nodes
 

6. 常用操作

6.1 注册服务

创建服务配置文件:

 

bash
 
 
sudo vi /etc/consul.d/web.json
 

 

配置内容:

 

json
 
 
{
  "service": {
    "name": "web",
    "id": "web-1",
    "address": "127.0.0.1",
    "port": 80,
    "check": {
      "http": "http://localhost:80/health",
      "interval": "10s"
    }
  }
}
 

 

重新加载配置:

 

bash
 
 
consul reload
 

6.2 查看服务

bash
 
 
# 列出所有服务
consul catalog services

# 查看特定服务详情
consul catalog service web
 

6.3 备份和恢复

bash
 
 
# 创建快照
consul snapshot save backup.snap

# 恢复快照
consul snapshot restore backup.snap
 

7. 卸载 Consul

bash
 
 
# 停止服务
sudo systemctl stop consul
sudo systemctl disable consul

# 删除文件
sudo rm -f /usr/local/bin/consul
sudo rm -rf /var/lib/consul
sudo rm -rf /etc/consul.d
sudo rm -f /etc/systemd/system/consul.service

# 删除用户和组
sudo userdel consul
sudo groupdel consul
 

8. 注意事项

  1. 生产环境中建议部署 3 个或 5 个服务器节点以确保高可用性
  2. 启用 TLS 加密以保护通信安全
  3. 配置适当的访问控制策略
  4. 定期备份 Consul 数据
  5. 监控 Consul 集群健康状态,可使用 Prometheus + Grafana 组合

 

通过以上步骤,你可以成功部署 Consul 服务网格,实现服务发现和配置管理功能。

--------------------------------------------------------------------------

 

SkyWalking 部署步骤

SkyWalking 是一款开源的分布式系统追踪、监控和诊断工具,特别适合微服务架构。以下是详细的部署步骤:

1. 环境准备

1.1 系统要求

  • 操作系统:Linux (推荐 CentOS 7+/Ubuntu 18.04+)
  • 内存:最低 4GB RAM,生产环境建议 8GB+
  • 磁盘:至少 20GB 可用空间
  • Java:OpenJDK 11+(SkyWalking OAP 服务需要)
  • 可选数据库:Elasticsearch 7.x+/MySQL 8.x+/TiDB 等(用于存储监控数据)

1.2 验证 Java 环境

bash
 
 
java -version
 

 

如未安装,请先安装 OpenJDK 11:

 

bash
 
 
# CentOS
sudo yum install java-11-openjdk-devel -y

# Ubuntu
sudo apt install openjdk-11-jdk -y
 

2. 安装 SkyWalking

2.1 下载 SkyWalking

bash
 
 
# 查看最新版本:https://skywalking.apache.org/downloads/
SKYWALKING_VERSION=9.7.0
wget https://archive.apache.org/dist/skywalking/${SKYWALKING_VERSION}/apache-skywalking-apm-${SKYWALKING_VERSION}.tar.gz
 

2.2 解压并安装

bash
 
 
# 解压
tar -xzf apache-skywalking-apm-${SKYWALKING_VERSION}.tar.gz

# 移动到系统目录
sudo mv apache-skywalking-apm-${SKYWALKING_VERSION} /usr/share/skywalking

# 创建软链接便于版本管理
sudo ln -s /usr/share/skywalking /usr/share/skywalking-current
 

2.3 创建专用用户

bash
 
 
# 创建用户组和用户
sudo groupadd skywalking
sudo useradd -g skywalking -s /sbin/nologin skywalking

# 设置权限
sudo chown -R skywalking:skywalking /usr/share/skywalking
 

3. 配置存储(以 Elasticsearch 为例)

SkyWalking 支持多种存储介质,推荐使用 Elasticsearch:

3.1 配置 Elasticsearch 连接

编辑配置文件:

 

bash
 
 
sudo vi /usr/share/skywalking/config/application.yml
 

 

修改存储配置:

 

yaml
 
 
storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    namespace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:http}
    connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
    socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
    user: ${SW_ES_USER:elastic}
    password: ${SW_ES_PASSWORD:your-elastic-password}
    # 索引分片和副本配置
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1}
 

4. 配置系统服务

4.1 创建 OAP 服务

bash
 
 
sudo vi /etc/systemd/system/skywalking-oap.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=SkyWalking Observability Analysis Platform
Documentation=https://skywalking.apache.org/
After=network.target elasticsearch.service

[Service]
User=skywalking
Group=skywalking
Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
Environment=SW_HOME=/usr/share/skywalking
ExecStart=/usr/share/skywalking/bin/oapService.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
 

4.2 创建 Web UI 服务

bash
 
 
sudo vi /etc/systemd/system/skywalking-ui.service
 

 

服务文件内容:

 

ini
 
 
[Unit]
Description=SkyWalking Web UI
Documentation=https://skywalking.apache.org/
After=network.target skywalking-oap.service

[Service]
User=skywalking
Group=skywalking
Environment=JAVA_HOME=/usr/lib/jvm/jre-11-openjdk
Environment=SW_HOME=/usr/share/skywalking
ExecStart=/usr/share/skywalking/bin/webappService.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
 

4.3 配置 Web UI(可选)

如需修改 UI 端口或连接的 OAP 地址:

 

bash
 
 
sudo vi /usr/share/skywalking/webapp/application.yml
 

 

修改配置:

 

yaml
 
 
server:
  port: 8080  # 默认端口

spring:
  cloud:
    gateway:
      routes:
        - id: oap-route
          uri: http://localhost:12800  # OAP 服务地址
          predicates:
            - Path=/graphql/**,/ui/**,/api/**,/analysis/**,/metrics/**,/log/**
 

5. 启动 SkyWalking

bash
 
 
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动 OAP 服务
sudo systemctl start skywalking-oap
sudo systemctl enable skywalking-oap

# 启动 Web UI 服务
sudo systemctl start skywalking-ui
sudo systemctl enable skywalking-ui

# 检查服务状态
sudo systemctl status skywalking-oap
sudo systemctl status skywalking-ui
 

6. 验证部署

6.1 查看日志

bash
 
 
# 查看 OAP 服务日志
sudo tail -f /usr/share/skywalking/logs/oap-server.log

# 查看 Web UI 日志
sudo tail -f /usr/share/skywalking/logs/webapp.log
 

6.2 访问 Web UI

打开浏览器,访问 http://your-server-ip:8080,可以看到 SkyWalking 的控制台界面。

6.3 检查 OAP 服务状态

bash
 
 
# 检查 OAP 健康检查接口
curl http://localhost:12800/health
 

 

成功响应应为:{"status":"UP"}

7. 配置应用程序接入

要监控应用程序,需要在应用中添加 SkyWalking Agent:

7.1 准备 Agent 包

SkyWalking 安装包中已包含 Agent:

 

bash
 
 
# Agent 目录
ls /usr/share/skywalking/agent
 

7.2 应用程序启动参数

在应用启动命令中添加以下参数:

 

bash
 
 
-javaagent:/usr/share/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=localhost:11800
 

 

例如,对于 Spring Boot 应用:

 

bash
 
 
java -javaagent:/usr/share/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=my-springboot-app \
-Dskywalking.collector.backend_service=localhost:11800 \
-jar your-application.jar
 

8. 卸载 SkyWalking

bash
 
 
# 停止服务
sudo systemctl stop skywalking-oap
sudo systemctl stop skywalking-ui
sudo systemctl disable skywalking-oap
sudo systemctl disable skywalking-ui

# 删除文件
sudo rm -rf /usr/share/skywalking
sudo rm -rf /usr/share/skywalking-current
sudo rm -f /etc/systemd/system/skywalking-oap.service
sudo rm -f /etc/systemd/system/skywalking-ui.service

# 删除用户和组
sudo userdel skywalking
sudo groupdel skywalking
  

9. 注意事项

  1. 生产环境中建议单独部署 Elasticsearch 集群,并配置适当的存储策略
  2. 根据监控规模调整 OAP 服务的 JVM 内存参数(在 bin/oapService.sh 中修改)
  3. 对于大规模部署,可考虑部署 OAP 集群以提高可用性
  4. 定期清理历史监控数据,避免存储容量不足
  5. 结合 SkyWalking 告警功能及时发现系统问题

 

通过以上步骤,你可以成功部署 SkyWalking 并开始监控分布式系统的性能和调用链路。

--------------------------------------------------------------------------

 

posted @ 2025-08-22 10:54  hanease  阅读(36)  评论(0)    收藏  举报