loki

采用Helm部署Grafana-Loki日志采集系统

不打扰是莪最后的温柔 提交于 2020-08-10 17:15:58
前一篇文章通过docker-compose 直接部署是最简单的方式,但是要兼容k8s、k3s集群环境,必须转化为yaml或者Helm来部署,之前yaml部署之后出现labels not found,采集日志为空。本文采用Helm来部署。 1. Helm安装部署,本文基于v2.14.3 Helm包含:HelmClient 和 TillerServer a)下载HelmClient wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz && tar zxvf helm-v2.14.3-linux-amd64.tar.gz cd helm-v2.14.3-linux-amd64 chmod +x helm cp helm /usr/local/bin helm version Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"} b)安装TillerServer,在k8s,k3s集群中需要配置ServiceAccount: tiller,并赋予cluster-admin角色权限,采用rbac.yaml配置 apiVersion: v1 kind:

使用模板元编程操作类型集合(C++11下的TypeList)

心不动则不痛 提交于 2020-08-06 09:59:47
群里有个朋友要实现这么一个功能:如何在编译期把一个函数类型的参数减少一个。 简单来说,就是实现下面这个模板: remove_func_par<2, void(int, long, short)>::type; // type = void(int, long) 根据输入的编译期整数,把函数参数表里对应的参数干掉一个。 为了实现这种功能,我们需要操作变参模板的参数包。比如像这样: // make function's parameters from the types template <typename R, typename TypesT> struct make_func_par; template <typename R, typename... P> struct make_func_par<R, types<P...>> { typedef R type(P...); }; // remove function's parameter template <size_t N, typename F> struct remove_func_par; template <size_t N, typename R, typename... P> struct remove_func_par<N, R(P...)> { using erase_pars_t = typename

轻量级日志采集系统Loki+grafana搭建

坚强是说给别人听的谎言 提交于 2020-08-06 03:46:36
一.Loki介绍 整体架构 Loki的架构非常简单,使用了和prometheus一样的标签来作为索引,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据,不但减少了两种查询之间的切换成本,也极大地降低了日志索引的存储。 Loki将使用与prometheus相同的服务发现和标签重新标记库,编写了pormtail, 在k8s中promtail以daemonset方式运行在每个节点中,通过kubernetes api等到日志的正确元数据,并将它们发送到Loki。 下面是日志的存储架构: 二.使用二进制包简单搭建 使用docker-composer可能比较方便,我们这里采用二进制包安装 1.安装loki主程序包 loki-linux-amd64.zip 查看配置文件 [root@centos7 Loki]# cat loki-config.yaml auth_enabled: false server: http_listen_port: 3100 ingester: lifecycler: address: 127.0.0.1 ring: kvstore: store: inmemory replication_factor: 1 final_sleep: 0s chunk_idle_period: 5m chunk_retain_period: 30s max

日志系统新贵 Loki,真香!!

心不动则不痛 提交于 2020-07-27 03:52:50
最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Loki的背景。 背景和动机 当我们的容器云运行的应用或者某个节点出现问题了,解决思路应该如下: 我们的监控使用的是基于prometheus体系进行改造的,prometheus中比较重要的是metric和alert,metric是来说明当前或者历史达到了某个值,alert设置metric达到某个特定的基数触发了告警,但是这些信息明显是不够的。 我们都知道,k8s的基本单位是pod,pod把日志输出到stdout和stderr,平时有什么问题我们通常在界面或者通过命令查看相关的日志 举个例子:当我们的某个pod的内存变得很大,触发了我们的alert,这个时候管理员,去页面查询确认是哪个pod有问题,然后要确认pod内存变大的原因,我们还需要去查询pod的日志,如果没有日志系统,那么我们就需要到页面或者使用命令进行查询了: 如果,这个时候应用突然挂了,这个时候我们就无法查到相关的日志了,所以需要引入日志系统,统一收集日志,而使用ELK的话,就需要在Kibana和Grafana之间切换,影响用户体验。 所以 ,loki的第一目的就是最小化度量和日志的切换成本,有助于减少异常事件的响应时间和提高用户的体验

loki grafana 团队开源的,类似Prometheus 的log 系统

半世苍凉 提交于 2020-03-16 14:21:47
Prometheus 主要面向的是metrics,但是loki 是log,这样加上grafana 强大的可视化以及alert能力, 我们可以做好多事情,loki 的设计来源于Prometheus。 组件说明 loki 包含三个组件 loki 核心组件进行log 的查询处理 promtail 一个agent 主要是进行log 的发送 grafana ui 环境准备 docker-compose 文件 version: "3" services: loki: image: grafana/loki:master ports: - "3100:3100" volumes: - $PWD:/etc/loki command: -config.file=/etc/loki/loki-local-config.yaml promtail: image: grafana/promtail:make-images-static-26a87c9 volumes: - $PWD:/etc/promtail - ./log:/var/log command: -config.file=/etc/promtail/promtail-docker-config.yaml grafana: image: grafana/grafana:master ports: - "3000:3000"

ES6专栏 - 新的数据结构 Symbol

人走茶凉 提交于 2020-03-04 23:41:04
ES6专栏 - 新的数据结构 Symbol 目录: Symbol的出现背景 将Symbol作为属性名 对Symbol属性名的遍历 Symbol.for(), Symbol.keyFor() 内置的Symbol值 Symbol的出现背景 我们在过去的开发中, 使用对象的场景由其之多, 有的时候一个对象可以很复杂, 由十多二十个属性组成, 这样对于不细心的开发者来说, 绝对会出问题, 啥问题? 哥们你没遇到过属性覆盖问题吗? 你在5天前定义了一个对象的属性name值为’loki’, 而在5天后, 你突然不小心给这个对象再次添加了一个属性name 值为thor, 自此loki就不存在了, 其实这个例子可能举得有点痴呆, 但是日常开发中我们确实有过属性覆盖从而造成bug的情况发生 于是, ES6 创造了一种新的数据结构 Symbol , 这哥们不得了, 他代表的就是一个独一无二的值, 不存在被覆盖, 如果我们用 Symbol 值作为对象的属性名, 那么我们就永远不用担心覆盖的问题喽 Symbol是原始数据类型 在此之前我们知道的原始类型有: String, Number, undefined, null, Boolean, 如今又加入了一个新成Symbol, 至于object, 笔者直接把他归为引用值, 但是如果你有看过业内比较著名的《ES6标准入门》的话,

Loki functor - problem with memory

六月ゝ 毕业季﹏ 提交于 2019-12-13 14:39:13
问题 I use Loki::Functor in my project for a simple event system. The event has its handler function taking some parameters. In this case, it is called PrintEventString . In order to put it in the queue, the event handlers must have same prototypes - in my case, void func(void) . So CreateEvent takes the handler, creates functor from it and binds the parameter, resulting in void f (void) prototype. Everything goes fine (first example with string stored in local variable), until I destroy the data

Loki's Functor with variadic templates

穿精又带淫゛_ 提交于 2019-12-11 03:20:21
问题 I have a question about the Functor implementation of the library Loki . I am doing some changes in order to make it work with variadic templates instead of having lines and lines of template specialization. The problem is that I am trying to use typedef for variadic template and I do not understand my error, that is why I could use some help from experts... Here is the header file. I tested it with a simple example: static void foo() { std::cout << "foo !!!" << std::endl; } int main( int

Why can't Alexandrescu use std::uncaught_exception() to implement SCOPE_FAIL in ScopeGuard11? [duplicate]

跟風遠走 提交于 2019-12-06 17:12:23
问题 This question already has answers here : Scope(failure) in C++11? (2 answers) Closed 6 years ago . Many people are no doubt familiar with Mr. Alexandrescus ScopeGuard template (now part of Loki) and the new version ScopeGuard11 presented here: http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C with source here: https://gist.github.com/KindDragon/4650442 In his talk at c++ and beyond 2012 he mentioned that he couldn't find a way to

Why can't Alexandrescu use std::uncaught_exception() to implement SCOPE_FAIL in ScopeGuard11? [duplicate]

断了今生、忘了曾经 提交于 2019-12-04 22:52:13
This question already has answers here : Scope(failure) in C++11? (2 answers) Closed 6 years ago . Many people are no doubt familiar with Mr. Alexandrescus ScopeGuard template (now part of Loki) and the new version ScopeGuard11 presented here: http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C with source here: https://gist.github.com/KindDragon/4650442 In his talk at c++ and beyond 2012 he mentioned that he couldn't find a way to correctly detect if scope was being exited because of an exception. Therefore he couldn't implement a