要搞成这样就需要钱来买服务器
- 开发人员一般不会给服务器权限,不能到服务器上直接看日志,所以通过ELK看日志。不让开发登录服务器。即使你查出来是开发的问题,费时间,而且影响了业务了,就是运维的问题
开发也不能登录到容器,因为担心他把配置搞坏了。 - es cluster 有三到7台(存储搜索日志用),接 logstash, 接缓存 kafka,再接 web
web不经过缓存直接传到es, 几千个容器的话,磁盘IO 和网卡会出现瓶颈,还会出现丢日志的情况(堵塞,写不进去了)。另外还有开发忘记关debug,更加剧了压力 - es 比如分三台机器,主分片和副分片存储在不同的两台机器上。为了就是一个机器down,数据不会丢失
- 规划三年左右的业务量,避免后期还要扩。要不很麻烦。es服务器的配置是
物理机的总体内存是96G,es用32G
15k RPM:性能最高的机械硬盘,适合对高I/O密集型任务的需求,如数据库和大型服务器系统。
示例
假设有4块硬盘:
- 硬盘1和硬盘2组成一组,采用RAID 1镜像;
- 硬盘3和硬盘4组成另一组,采用RAID 1镜像;
- 然后将这两组硬盘再通过RAID 0进行条带化。
这样,RAID 10既能保证任意一块硬盘故障时不会丢失数据(因为有镜像备份),同时也能提升数据传输的速度(因为有条带化)。
例如,在一个需要频繁进行大数据量读写操作的数据库服务器中,RAID 10能够提供高效的读取和写入速度,同时保证数据安全。在硬盘损坏的情况下,数据可以从镜像中恢复,不影响正常的服务运行。
- logstash需要在每台机器上都安装,它是java环境的。也可以daemonset方式部署
- 日志都在一块的话,你就能快速找出有问题的error。不用一个个去看
- 通过统计日志,找到同一个ip大量访问,把这个有问题的ip加入黑名单。达到安全的作用
- 还可以通过日志找出耗时多的服务
- logstash放到容器里不可行。因为它需要java环境,而且很大,要用filebeat替代,收集日志后再接 logstash,处理日志
- 开启nginx账号认证功能在kibana前面,为了再添加一层认证。安全
- 就像 kafka的topic .es的叫做索引
- 弄两块盘做raid 1,做系统。另外8块盘做raid10. 时间要同步
- es logstash kibana版本要一致,小版本也不要跨。都是rpm包安装到裸机的