Ansible 服务部署-部署 ELK 集群服务

这篇具有很好参考价值的文章主要介绍了Ansible 服务部署-部署 ELK 集群服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引用博文:https://blog.csdn.net/qq_22648091/article/details/114140816
侵权联删

Ansible 服务部署-部署 ELK 集群服务

​ 创建三台 云主机分别命名为 elk01、elk02 和 elk03,Ansible 主机可以使用上一题的环境。要求 Ansible 节点编写剧本,执 行 Ansible 剧本可以在这三个节点部署 ELK 集群服务(在/root 目录下创建 install_elk 目录作 为 ansible 工作目录,部署的入口文件命名为 install_elk.yaml)。具体要求为三个节点均安装 Elasticserach 服务并配置为 Elasticserach 集群;kibana 安装在第一个节点;Logstash 安装在 第二个节点。

ELK需要的二进制包,如下是下载链接
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/kibana/kibana-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.0-linux-x86_64.tar.gz

地址规划:

角色 主机名 IP地址
ansible母机 ansible 10.18.4.46
ela01 && kibana elk-1 10.18.4.201
ela02 && logstash elk-2 10.18.4.202
ela03 elk-3 10.18.4.203

​ 基础准备

#域名解析(all node)
cat >> /etc/hosts <<EOF
10.18.4.46 ansible
10.18.4.201 elk-1 
10.18.4.202 elk-2 
10.18.4.203 elk-3 
EOF

#####centos7.9 node#####
hostnamectl set-hostname elk-1
hostnamectl set-hostname elk-2
hostnamectl set-hostname elk-3
####Ansible node#####
mkdir /root/install_elk
touch /root/install_elk/install_elk.yaml
mkdir -p /root/install_elk/roles/{ela,kib,log}/{files,handlers,tasks,templates,vars}
#在ansible节点与三台节点建立免密钥通信
ssh-keygen
ssh-copy-id elk-1
ssh-copy-id elk-2
ssh-copy-id elk-3
#ansible主机清单
cat >>  /etc/ansible/hosts <<EOF
[ela]
elk-1 node_name=elk-1
elk-2 node_name=elk-2
elk-3 node_name=elk-3
[kib]
elk-1
[log]
elk-2
EOF

项目目录结构
Ansible 服务部署-部署 ELK 集群服务

主入口文件

/root/install_elk/install_elk.yaml

cat > /root/install_elk/install_elk.yaml <<EOF
---
- hosts: ela
  gather_facts: no
  remote_user: root
  roles: 
  - ela

- hosts: kib 
  gather_facts: no
  remote_user: root
  roles:
  - kib 
  
- hosts: log
  gather_facts: no
  remote_user: root
  roles:
  - log
EOF

部署ela集群

/root/install_elk/roles/ela/tasks/main.yaml入口文件

cat > /root/install_elk/roles/ela/tasks/main.yaml <<EOF
- name: 安装Java环境
  unarchive:
    src: jdk-8u144-linux-x64.tar.gz  
    dest: /opt
    list_files: yes

- name: 添加Java环境变量
  shell: echo 'export JAVA_HOME=/opt/jdk1.8.0_144' >> /etc/profile && echo 'export PATH=$PATH:/opt/jdk1.8.0_144/bin' >> /etc/profile

- name: 生效环境变量
  shell: source /etc/profile

- name: 创建用户
  user:
    name: ela

- name: 传输本地软件包到远程主机并且解压到指定目录
  unarchive:
    src: elasticsearch-7.17.0-linux-x86_64.tar.gz
    dest: /opt
    owner: ela
    group: ela
    list_files: yes
  register: ret

- name: 创建软链接
  file:
    src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
    dest: /opt/elasticsearch
    state: link

- name: 传输配置文件
  template:
    src: elasticsearch.j2
    dest: /opt/elasticsearch/config/elasticsearch.yml
    owner: ela
    group: ela
    
- name: 传输系统配置文件
  copy:
    src: limits.conf
    dest: /etc/security/limits.conf

- name: 传输系统配置文件
  copy:
    src: sysctl.conf
    dest: /etc/sysctl.conf

- name: 加载 /etc/sysctl.conf文件,使内核参数生效
  shell: sysctl -p

- name: 启动服务
  # 使用ela用户执行此命令
  become: yes
  become_user: ela
  command:
    # argv 是一个列表,存放了需要执行的命令及其参数
    # 一行一个
    argv:
      - nohup
      - /opt/elasticsearch/bin/elasticsearch
      - -d
EOF

/root/install_elk/roles/ela/templates/elasticsearch.j2,elasticsearch的主配置文件模板

cat > /root/install_elk/roles/ela/templates/elasticsearch.j2 <<EOF
cluster.name: elk
node.name: {{ node_name }}
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts:
   - 10.18.4.201
   - 10.18.4.202
   - 10.18.4.203
cluster.initial_master_nodes: ["elk-1","elk-2","elk-3"]
EOF

/root/install_elk/roles/ela/files/limits.conf,系统文件句柄数配置文件

cat > /root/install_elk/roles/ela/files/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc  4096
* hard nproc 4096
EOF

/root/install_elk/roles/ela/files/sysctl.conf,系统的内核配置文件

只有 # elasticsearch 下面的配置内容是必须的,其他可选

cat > /root/install_elk/roles/ela/files/sysctl.conf <<EOF
vm.max_map_count=655360
EOF

验证:
Ansible 服务部署-部署 ELK 集群服务

部署kibana

/root/install_elk/roles/kib/tasks/main.yaml任务入口文件

cat > /root/install_elk/roles/kib/tasks/main.yaml <<EOF
- name: 传输本地软件包到远程主机并且解压到指定目录
  unarchive:
    src: kibana-7.17.0-linux-x86_64.tar.gz
    dest: /opt
    owner: ela
    group: ela
    list_files: yes
  register: ret

- name: 创建软链接
  file:
    src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
    dest: /opt/kibana
    state: link

- name: 创建日志与PID存放目录
  shell: mkdir -p /var/log/kibana /run/kibana

- name: 给如上目录设置权限
  shell: chown -R ela:ela /var/log/kibana /run/kibana

- name: 传输配置文件
  copy:
    src: kibana.yml
    dest: /opt/kibana/config/kibana.yml
    
- name: 传输服务管理文件
  template:
    src: kibana.service.j2
    dest: /etc/systemd/system/kibana.service

- name: 启动服务
  systemd:
    name: kibana
    state: started
    daemon_reload: yes
EOF

/root/install_elk/roles/kib/files/kibana.ymlKibana 程序的配置文件

cat > /root/install_elk/roles/kib/files/kibana.yml <<EOF
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.18.4.201:9200"]
i18n.locale: "zh-CN"
pid.file: /run/kibana/kibana.pid
logging.dest: /var/log/kibana/kibana.log
EOF

/root/install_elk/roles/kib/templates/kibana.service.j2 ,Kibana 程序管理模板文件

cat > /root/install_elk/roles/kib/templates/kibana.service.j2 <<EOF
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ela
Group=ela
ExecStart=/opt/kibana/bin/kibana
ExecStop=/bin/pkill -F "/run/kibana/kibana.pid"
Restart=on-failure
RestartSec=3
StartLimitBurst=3
StartLimitInterval=60
WorkingDirectory=/opt/kibana
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target
EOF

验证:
Ansible 服务部署-部署 ELK 集群服务Ansible 服务部署-部署 ELK 集群服务

部署Logstash

/root/install_elk/roles/log/tasks/main.yaml任务入口文件

cat > /root/install_elk/roles/log/tasks/main.yaml <<EOF
- name: 创建日志目录
  file:
    path: /var/log/logstash
    state: directory

- name: 服务日志目录权限
  shell: chown -R ela:ela /var/log/logstash

- name: 传输本地软件包到远程主机并且解压到指定目录
  unarchive:
    src: logstash-7.17.0-linux-x86_64.tar.gz
    dest: /opt
    list_files: yes
  register: ret

- name: 创建软链接
  file:
    src: /opt/{{ ret.files.0 | regex_replace('/.*') }}
    dest: /opt/logstash
    state: link

- name: 传输配置文件
  template:
    src: logstash.yml
    dest: /opt/logstash/config/logstash.yml

- name: 传输管道配置文件
  copy:
    src: logstash.conf
    dest: /opt/logstash/config/logstash-sample.conf
    
- name: 传输系统服务文件
  template:
    src: logstash.service.j2
    dest: /etc/systemd/system/logstash.service

- name: 启动 logstash
  systemd:
    name: logstash
    state: started
    daemon_reload: yes

- name: restart logstash
  systemd:
    name: logstash
    state: restarted
    daemon_reload: yes

#- name: 启动服务
#  become: yes
#  become_user: ela
#  shell: sh /opt/logstash/bin/logstash -f /opt/logstash/config/logstash-sample.conf 
EOF

/root/install_elk/roles/log/templates/logstash.yml,Logstash 程序主配置文件

cat > /root/install_elk/roles/log/templates/logstash.yml <<EOF
http.host: "0.0.0.0"
path.logs: /var/log/logstash/
EOF

/root/install_elk/roles/log/files/logstash.conf,Logstash 程序管道配置文件

cat > /root/install_elk/roles/log/files/logstash.conf <<EOF
#将本地的/var/log/yum.log内日志标准输入
input {
  file {
    path => "/var/log/yum.log"
    type => "yum_log"
    start_position => "beginning"
  }
}

#标准输出到elasticsearch中
output {
  elasticsearch {
    hosts =>  ["10.18.4.201:9200","10.18.4.202:9200","10.18.4.203:9200"] 
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
EOF

/root/install_elk/roles/log/templates/logstash.service.j2,Logstash 程序进程管理模板文件

cat > /root/install_elk/roles/log/templates/logstash.service.j2 <<EOF
Unit]
Description=logstash

[Service]
Type=simple
ExecStart=/opt/logstash/bin/logstash "-f" "/opt/logstash/config/*.conf"
Restart=always
WorkingDirectory=/
LimitNOFILE=65535
TimeoutStopSec=infinity
[Install]
WantedBy=multi-user.target
EOF

验证:

​ 在任务栏中再到管理 -》堆栈管理。

Ansible 服务部署-部署 ELK 集群服务
​ 创建一个索引模式,选择所有的索引。
Ansible 服务部署-部署 ELK 集群服务
Ansible 服务部署-部署 ELK 集群服务
Ansible 服务部署-部署 ELK 集群服务

​ 测试安装一个软件来生成数据。
Ansible 服务部署-部署 ELK 集群服务

[root@elk-2 ~]#yum -y install httpd

​ 来到discover中检索数据。

Ansible 服务部署-部署 ELK 集群服务
Ansible 服务部署-部署 ELK 集群服务文章来源地址https://www.toymoban.com/news/detail-403717.html

到了这里,关于Ansible 服务部署-部署 ELK 集群服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ELK集群部署---Kibana的部署

    1.  环境规划: 主机名 IP地址 角色 node1 192.168.56.111 ElasticSearch(master) Zookeeper Kafka node2 192.168.56.112 ElasticSearch(slave) Kibana Zookeeper Kafka node3 192.168.56.113 ElasticSearch(slave) Zookeeper Kafka node4 192.168.56.114 Logstash Filebeat 2.  安装Kibana: 3.  配置Kibana: 4.  启动Kibana: 5.  访问Kibana,\\\" http://

    2024年02月10日
    浏览(31)
  • 8版本ELK集群部署

    elasticsearch官网地址:Elasticsearch:官方分布式搜索和分析引擎 | Elastic 第一步: 环境配置(每一台都做) 配置主机名、配置IP地址、每台主机配置/etc/hosts名称解析 192.168.11.128 es1 192.168.11.130 es2 192.168.11.138 es3 将Linux系统的软硬限制最大文件数改为65536,将所有用户的最大线程数修

    2024年02月06日
    浏览(40)
  • ansible部署zookeeper和kafka集群

    节点 IP ansible 192.168.200.75 node1 192.168.200.76 node2 192.168.200.77 node3 192.168.200.78 基础环境配置就不过多赘述了 主机名、主机解析、免密访问、ansible下载、配置ansible主机、防火墙、selinux、配置centos2009镜像、配置ftp远程。均已配置 在ansible节点的/root目录下创建example目录,作为Ansib

    2024年02月09日
    浏览(46)
  • Ansible部署MariaDB galera集群(多主)

    MariaDB Galera集群是一套基于同步复制的、多主的MySQL集群解决方案,使用节点没有单点故障,可用性高,读写性能高,可扩展性好。 主要特点 : 同步复制,主备无延迟 多主架构允许多个节点成为集群中的主节点,并且所有主节点都可以处理写入请求,这意味着你可以在任何

    2024年02月14日
    浏览(41)
  • ELK集群部署---LogStash,Filebeat的部署

    1.  环境规划: 主机名 IP地址 角色 node1 192.168.56.111 ElasticSearch(master) Zookeeper Kafka node2 192.168.56.112 ElasticSearch(slave) Kibana Zookeeper Kafka node3 192.168.56.113 ElasticSearch(slave) Zookeeper Kafka node4 192.168.56.114 Logstash Filebeat

    2023年04月18日
    浏览(40)
  • 【Ambari】Ansible自动化部署大数据集群

    目录 一.版本说明和介绍信息 1.1 大数据组件版本 1.2 Apache Components 1.3 Databases支持版本 二.安装包上传和说明 三.服务器基础环境配置 3.1global配置修改 3.2主机名映射配置 3.3免密用户名密码配置 3.4 ansible安装 四. 安装Ambari-server 4.1 安装ambari-server 4.2 检查REPO源 五、HDP 安装

    2024年04月15日
    浏览(65)
  • kubersphere部署elk集群无tls

    elasticsearch.yml 测试 补充 kibana.yml 测试 logstash.yml logstash.conf 测试 https://blog.csdn.net/qq_20143059/article/details/112992016

    2024年02月12日
    浏览(36)
  • ELK 企业级日志分析系统的概念、ELK Elasticsearch 集群部署

    1、ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ==ElasticSearch、Logstash 和 Kiabana ==三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch 是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 E

    2024年02月16日
    浏览(51)
  • centos7.6部署ELK集群(一)之elasticsearch7.7.0集群部署

    32.3. 部署es7.7.0 32.3.1. 下载es(各节点都做) wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz 32.3.2. 解压至安装目录(各节点都做) tar -xvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /vmdata/ 32.3.3. 创建es用户并设置密码(各节点都做) ES 7.x 开始不再允许以任何方

    2023年04月17日
    浏览(42)
  • 在k8s集群部署ELK

    使用kubeadm或者其他方式部署一套k8s集群。 在k8s集群创建一个namespace:halashow 3.1 准备资源配置清单  Deployment中存在一个es的业务容器,和一个init容器,init容器主要是配置vm.max_map_count=262144。 service暴露了9200端口,其他服务可通过service name加端口访问es。 3.1 准备资源配置清单

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包