saltstack部署ELK+redis

(这一篇博文只是记录一下自己实践的过程,过多原理不多解释,做这个实验大部分原因是练习,博主玻璃心,不喜勿喷,哪里有错可以讨论,谢谢)

##一些配置文件和sls都在github上,https://github.com/HalQQ/elk_redis

架构图

Saltstack:

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

 

ELK=elasticsearch+Logstash+Kibana

Elasticsearch:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

 

Logstash:LogstashLogstash 是一个接收,处理,转发日志的工具。支持系统日志,webserver 日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型

 

Kibana: Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。

 

Redis

Redis: Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区    

环境:

系统

IP地址

主机名

安装的软件

Centos 7

192.168.253.144

Linux-node1

Es,Logstash,Apache,Salt-minion

Centos 7

192.168.253.145

Linux-node2

Es,Logstash,Redis,Salt-minion

Centos 7

192.168.253.146

Linux-node3

Es,Logstash,Apache,Salt-master,

Salt-minion,



1.安装saltstack

这里采用最简单的yum安装,版本为2018.3.0

三台机都先安装salt-minion

yum install https://repo.saltstack.com/yum/redhat/salt-repo-2018.3-1.el7.noarch.rpm  -y
yum clean expire-cache 
yum install salt-minion -y

然后在node3上安装salt-master

yum install salt-master -y

在三台机上修改配置文件

vim /etc/salt/minion

master: 192.168.253.146 ##将ip修改为master的ip地址

在salt-master上修改配置文件

vim /etc/salt/master

file_roots:           ###打开file_root 放sls文件
  base:
    - /srv/salt

在master上创建相关目录

mkdir /srv/salt/files -p

在node3上启动salt-master

systemctl  start salt-master

三台机启动salt-minion,并关闭防火墙和selinux

systemctl stop firewalld
setenforce 0
systemctl start salt-minion

然后再node3上接收minion的公钥


测试一下,在salt-master即node3 端执行命令


表示成功。

到此为止,saltstack安装安装完毕。接下来写state.sls文件

先展示一下目录机构


一个一个文件来看吧

搭建es集群的sls文件

[root@Linux-node3 salt]# cat es.sls     
es-install:
    pkg.installed:
      - pkgs:
        - java
      - unless: java -version
    file.managed:
        - name: /etc/yum.repos.d/elasticsearch.repo
        - source: salt://files/elasticsearch.repo
        - mode: 644
        - user: root
        - group: root
    cmd.run:
        - name: rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch&&yum install elasticsearch    -y
        - require:
          - file: /etc/yum.repos.d/elasticsearch.repo 
        - unless: test -d /usr/share/elasticsearch
es-init:
    file.managed:
        - name: /etc/elasticsearch/elasticsearch.yml 
        - source: salt://files/elasticsearch.yml
        - mode: 644
        - user: root
        - group: root
        - template: jinja
        - NODE_NAME: {{ grains['ipv4'][1] }}
        - IP1: 192.168.253.144
        - IP2: 192.168.253.145
        - IP3: 192.168.253.146
        - require:
          - cmd: es-install
    service.running:
      - enable: True
      - name: elasticsearch
      - watch:
        - file: /etc/elasticsearch/elasticsearch.yml

搭建apache服务的sls文件

[root@Linux-node3 salt]# cat httpd.sls 
http-install:
    pkg.installed:
      - pkgs:
        - httpd
      - unless: test -d /etc/httpd
http-init:
    service.running:
          - enable: True
          - name: httpd

搭建kibana的sls文件

[root@Linux-node3 salt]# cat httpd.sls 
http-install:
    pkg.installed:
      - pkgs:
        - httpd
      - unless: test -d /etc/httpd
http-init:
    service.running:
          - enable: True
          - name: httpd
[root@Linux-node3 salt]# cat kibana.sls 
kibana-install:
    pkg.installed:
        - pkgs:
          - java
        - unless: java -version
    file.managed:
        - name: /etc/yum.repos.d/kibana.repo
        - source: salt://files/kibana.repo
        - mode: 644
        - user: root
        - group: root
    cmd.run:
        - name: rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch && yum install kibana -y
        - require:
          - file: /etc/yum.repos.d/kibana.repo
        - unless: test -d /usr/share/kibana

kibana的初始化

[root@Linux-node3 salt]# cat kibana-init.sls 
/etc/kibana/kibana.yml:
    file.managed:
        - source: salt://files/kibana.yml
        - mode: 644
        - user: root
        - group: root
/etc/profile:
    file.append:
        - text:
          - export "PATH=/usr/share/kibana/bin/:$PATH"

logstash搭建与初始化sls文件

[root@Linux-node3 salt]# cat logstash.sls 
logstash-install:
    pkg.installed:
        - pkgs:
          - java
        - unless: java -version
    file.managed:
        - name: /etc/yum.repos.d/logstash.repo
        - source: salt://files/logstash.repo
        - mode: 644
        - user: root
        - group: root
    cmd.run:
        - name: rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch&& yum install logstash -y
        - require:
          - file: /etc/yum.repos.d/logstash.repo
        - unless: test -d /usr/share/logstash
logstash-init:
    file.append:
        - name: /etc/profile
        - text:
          - export PATH="/usr/share/logstash/bin/:$PATH"

发送相关文件的sls

[root@Linux-node3 salt]# cat logstash-apachelog.sls 
/etc/logstash/conf.d/apachelog_redis.conf:
    file.managed:
      - source: salt://files/apachelog_redis.conf
      - mode: 644
      - user: root
      - group: root
      - unless: test -f /etc/logstash/conf.d/apachelog_redis.conf
[root@Linux-node3 salt]# cat logstash_redis_es.sls 
/etc/logstash/conf.d/redis_es.conf:
    file.managed:
      - source: salt://files/redis_es.conf
      - mode: 644
      - user: root
      - group: root
      - unless: test -f /etc/logstash/conf.d/redis_es.conf

安装redis的sls文件

[root@Linux-node3 salt]# cat redis.sls 
redis-install:
    file.managed:
        - name: /usr/local/src/redis-4.0.9.tar.gz
        - source: salt://files/redis-4.0.9.tar.gz
        - mode: 755
        - user: root
        - group: root
        - unless: test -d /usr/local/redis-4.0.9.tar.gz
    cmd.run:
        - name: cd /usr/local/src/&&tar -xzf redis-4.0.9.tar.gz&& cd redis-4.0.9&& make 
        - unless: test -d /usr/local/src/redis-4.0.9
redis-init:
    file.managed:
        - name: /usr/local/src/redis-4.0.9/redis.conf
        - source: salt://files/redis.conf
        - mode: 644
        - user: root
        - group: root

系统初始化文件

[root@Linux-node3 salt]# cat system-init.sls 
system-init:
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - net-tools

top.sls

[root@Linux-node3 salt]# cat top.sls 
base:
  '*':
    - es
    - system-init
    - httpd
    - logstash
  '192.168.253.146':
    - kibana
    - kibana-init
  '192.168.253.145':
    - redis
    - logstash_redis_es
  '192.168.253.14[4,6]':
    - logstash-apachelog

其余一些配置文件都在github上,地址https://github.com/HalQQ/elk_redis

完成state.sls编写之后在salt-master执行

salt   '*'  state.highstate

在node2上启动redis

/usr/local/src/redis-4.0.9/src/redis-server  --protected-mode no

在node1,node3启动logstash发送apache日志

logstash -f /etc/logstash/conf.d/apachelog_redis.conf

(##如果显示找不到logstash命令 可能因为路径没有添加,添加以下路径即可)


然后用node2查看一下


在node2上启动logstash将日志转发到es集群中

logstash -f /etc/logstash/conf.d/apachelog_redis.conf


在node1上启动kibana

(##如果显示找不到命令,则添加一下kibana路径即可,)


登陆访问 http://192.168.253.146:5601


到此为止 saltstack部署elk就基本完成了,当然了,这只是比较简单的搭建出来了,很多配置没有调。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值